2017-05-16 16 views
0

類似サイトには、Representing 4D data in mplot 3D using colormapsまたはHow to make a 4d plot using Python with matplotlibのような過去の質問がありましたが、私が見つけた限り、私の具体的な問題には答えられません。Pythonでの4Dベクトルの可視化

私は私の処分で、以下のデータを持っている:

x1 = numpy.logspace(-100, 20, num=13, base=2) 
x2 = numpy.logspace(-100, 20, num=13, base=2) 
x3 = numpy.logspace(-5, 5, num=11, base=10) 

y = [...] 

だから、13個の要素と11個の要素を持つ1つのベクターと2つのベクトルになります。次に、yは、13×13 * 11の変数であり、の、x1,x2,の要素の組み合わせごとにyに対応する値があります。

このデータを視覚化するための洗練された方法がPythonにあるかどうかは疑問です。私は3番目の変数 - - の例では、私の場合はそれがyであるのに対して、私が投稿したリンクのように、3Dプロットとカラーマッピングを組み合わせることを考えていました。 x1,x2およびの機能を有する。

これを単一のグラフまたはできるだけ少ないグラフで実現する方法はありますか?

編集:アイデアは、例えば、各カラーマップがの値に対応するカラーマップ11を、プロットするかもしれません。ダミー例:

Multiple color maps

はどのようにこれが達成されるだろうか?

+0

1つのオプションは、(HTTP [この質問に]提示されるよう、3Dで色のキューブをプロットすることであろう.com/questions/40853556/3d-discrete-heatmap-in-matplotlib)。私は確かではありませんが、それが有用なプロットであれば、求める人はそれについてとても喜んでいました。あなたはまた、異なる色の小さなボールをプロットすることについて考えることができます。 1つの問題は、この種の質問が本当に答えにくく、実際に何が適しているかを実際に推測させることです。だから私は、あなたが望む種類のプロットを思いついてから、matplotlibでそれを得る方法を尋ねる必要があると思います。 – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnestあなたが答えを述べると、そこに何かを見るのはむしろ難しいです。 –

+0

あなたは私のポイントを得ますよね?それはあなたが望むものに完全に依存しており、私たちはそれを推測することはできません。 – ImportanceOfBeingErnest

答えて

1

は、大まかに言えば、あなたはこのような何かを行うことができます:// stackoverflowの:

import matplotlib.pyplot as plt 
import numpy as np 

x1 = np.logspace(-100, 20, num=13, base=2) 
x2 = np.logspace(-100, 20, num=13, base=2) 
x3 = np.logspace(-5, 5, num=11, base=10) 
y = np.random.rand(len(x3), len(x2), len(x1)) 

fig, axes = plt.subplots(ncols=4, nrows=3) 
fig.subplots_adjust(right=0.8, wspace=0.25, hspace=0.05) 
for i, ax in enumerate(axes.flatten()): 
    if i < len(x3): 
     ax.set_xticks([0,6,12]) 
     ax.set_yticks([0,6,12]) 
     ax.set_yticklabels([]); ax.set_xticklabels([]) 
     im = ax.imshow(y[i, :,:], vmin=0, vmax=1, aspect="equal") 
     if i % 4 == 0: 
      ax.set_yticklabels([r"$2^{-100}$",r"$2^{-40}$",r"$2^{20}$"]) 
     if i >=8: 
      ax.set_xticklabels([r"$2^{-100}$",r"$2^{-40}$",r"$2^{20}$"])  
    else: 
     ax.axis("off") 

nax = fig.add_subplot(111, frame_on=False) 
nax.set_xticks([]) 
nax.set_yticks([]) 
nax.set_xlabel('xlabel', labelpad=20) 
nax.set_ylabel('ylabel', labelpad=40) 

cbar_ax = fig.add_axes([0.85, 0.15, 0.02, 0.7]) 
fig.colorbar(im, cax=cbar_ax) 

plt.show() 

enter image description here

+0

@ImportanceOfBeingErnestありがとう、これは動作します。最後の2つのこと:_single_カラーバーを出力にどのように追加しますか?すべてのマップの下部( 'x'軸)とマップの左側(' y'軸)にラベルをどのように追加しますか? –

+1

私は答えを更新しました。対数ラベリングにも助けが必要ですか? – ImportanceOfBeingErnest

+0

それは素晴らしいでしょう@ImportanceOfBeingErnest!しかし、おそらく全体のラベル付けの代わりに、 'x1'と' x2'の最初、ちょうど中間と最後の値。 –