2

私はPythonを初めて使用し、Pythonをインストールした後、matplotlibを使用して3Dデータをプロットすることに成功しました。悲しいことに、私がどうやってやるのかわからないのは色の部分だけです。私の画像は表面を示しているだけですが、カラーバーをまったく使用していません。これが私のコードです。

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')

data = np.genfromtxt('Uizq.txt')
x = data[:,0]
y = data[:,1]
z = data[:,2]

xi = np.linspace(min(x), max(x))
yi = np.linspace(min(y), max(y))

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('U')

X, Y = np.meshgrid(xi, yi)
Z = griddata(x, y, z, xi, yi)
ax.set_zlim3d(np.min(Z), np.max(Z))


surf = ax.plot_surface(X, Y, Z, rstride=2, cstride=2, cmap=cm.jet,
                   linewidth=0.5, antialiased=False)

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

プロット

明らかにすべて青であることがわかります。フルcm.jetスペクトルを使用して、色を「U」と関連付けたいと思います。これは非常に初心者の質問かもしれないので、目を転がしてしまったらごめんなさい。

4

1 に答える 1

2

行を追加します

surf.set_clim([np.min(Z),np.max(Z)])

カラーバーを追加する前に。

3Dプロットではマスキングが考慮されていないようです。そのためNaN、データに含めているため、自動色制限が混乱しています。

于 2012-10-30T15:16:11.723 に答える