我正在尝试使用matplotlib的pcolormesh函数绘制一个在2d坐标中显示点的图表,并且点的颜色将由一个数字定义。Matplotlib Pcolormesh - 我应该以什么格式提供数据?
我有三个数组,其中一个具有x坐标,另一个具有y坐标,第三个数组具有应该表示颜色的数字。
xdata = [ 695422. 695423. 695424. 695425. 695426. 695426.]
ydata = [ 0. -15.4 -15.3 -15.7 -15.5 -19. ]
colordata = [ 0. 121. 74. 42. 8. 0.]
现在,显然pcolormesh希望其数据为三个二维数组。 在一些例子中我已经看到了这样的事情正在做:
newxdata, newydata = np.meshgrid(xdata,ydata)
好吧,但我怎么弄colordata成相似的格式?我试图这样:
newcolordata, zz = np.meshgrid(colordata, xdata)
但我不完全确定它是否正确。现在,如果我尝试绘制图:
ax.pcolormesh(newxdata, newydata, newcolordata)
我得到的东西看起来像this。 没有错误,所以我想这很好。它返回的图片显然不像我想要的那样。有人能指出我正确的方向吗?数据数组仍然是错误的格式?
这应该是所有重要的代码:
newxdata, newydata = np.meshgrid(xdata,ydata)
newcolordata, zz = np.meshgrid(colordata, xdata)
print newxdata
print newydata
print newcolordata
diagram = plt.figure()
ax = diagram.add_subplot(111)
xformat = DateFormatter('%d/%m/%Y')
ax.xaxis_date()
plot1 = ax.pcolormesh(newxdata, newydata, newcolordata)
ax.set_title("A butterfly diagram of sunspots between dates %s and %s" % (date1, date2))
ax.autoscale(enable=False)
ax.xaxis.set_major_formatter(xformat)
diagram.autofmt_xdate()
if command == "save":
diagram.savefig('diagrams//'+name+'.png')
编辑:我注意到,颜色也对应着数字。现在我只需要将这些大小相同的酒吧变成点。
阅读接受的答案,我认为这个问题是一种误导:如果你想直方图,你不应该期待pcolormesh,meshgrid ......这些都与显示通过插值标量在一个普通的电网 – SAAD