我有安排这样的东西数据:再次出现阵列
x = [0,1,2,0,1,2,0,1,2]
y = [0,0,0,1,1,1,2,2,2]
z = [2,4,3,3,5,1,1,2,1]
我将如何绘制这件事让我有一个3x3 imshow或等值线图?
我有安排这样的东西数据:再次出现阵列
x = [0,1,2,0,1,2,0,1,2]
y = [0,0,0,1,1,1,2,2,2]
z = [2,4,3,3,5,1,1,2,1]
我将如何绘制这件事让我有一个3x3 imshow或等值线图?
您可以使用contourf了点。它要求您的数据跟随网格。您可以通过创建一个二维网格:
x, y = np.meshgrid(x, y)
然后运行功能z
所有(x, y)
对和情节。
import matplotlib.pyplot as plt
...
plt.contourf(x , y, z)
plt.show()
或者你可以有一个像3D plot:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
...
ax.plot_surface(x, y, z, color='b')
plt.show()
如果您没有访问产生z
功能。你必须interpolate。
from scipy.interpolate import griddata
# points is the original pair (x, y)
grid_z0 = griddata(points, z, (grid_x, grid_y), method='nearest')
如果z
事实上是x
和y
的功能,你想一个countourf
密谋,您可以重塑与numpy的你的阵列,然后绘制它:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([0,1,2,0,1,2,0,1,2])
y = np.array([0,0,0,1,1,1,2,2,2])
z = np.array([2,4,3,3,5,1,1,2,1])
cols = np.unique(x).shape[0]
X = x.reshape(-1, cols)
Y = y.reshape(-1, cols)
Z = z.reshape(-1, cols)
plt.contourf(X,Y,Z)
plt.show()
完美!非常感谢你! – jhodgo
我很高兴帮助!这里在StackOverflow中,如果答案有帮助,[接受](https://meta.stackexchange.com/a/5235)建议,谢谢! –
你的意思是这样的:https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#mpl_toolkits.mplot3d.Axes3D.scatter? – nikpod
z是x和y的函数吗? 'countourf'需要。 –