matplotlib将来自csv的X Y数据绘制为pcolormesh

时间:2016-02-03 04:39:20

标签: python csv matplotlib

我在这种形式的csv中有数据:

X,Y,Z
0,0,0.0
0,1,0.0
1,0,1.0
1,1,0.55
2,0,4.0
2,1,3.216

我不确定如何将此数据提供给pcolormesh。我想我必须使用np.meshgrid,但在这种情况下我不确定如何处理。

dat = pd.read_csv('my_dat.csv')
plt.pcolormesh(dat['X'], dat['Y'], dat['Z'])
plt.show()

Value error: need more than one value to unpack

中的结果

我不明白 - 为什么这不起作用?

1 个答案:

答案 0 :(得分:3)

您的数据只需要重新塑造。这里不需要使用np.meshgrid,因为每个单元格已经有x和y坐标。

如果您在x中有nx坐标,在y中有ny坐标,那么您可以这样做:

X = dat['X'].reshape(nx,ny).T
Y = dat['Y'].reshape(nx,ny).T
Z = dat['Z'].reshape(nx,ny).T

plt.pcolormesh(X,Y,Z)
plt.show()

请注意,pcolormesh希望您的xy维度比z维度大一倍,因为xy定义了边缘单元格中,z定义单元格中心的颜色。来自文档:

  

理想情况下,X和Y的尺寸应大于C的尺寸;如果尺寸相同,则忽略C的最后一行和一列。

因此,在您的示例中,除非您添加x和y坐标1大于单元格数的虚拟单元格的行和列,否则最终行和列中的颜色将会丢失。另一种方法是使用plt.contourf,其中x,y和z应该是相同的长度。