【发布时间】:2013-12-04 14:53:58
【问题描述】:
我有这样的数据:
dates = ['1874-05-02', '1874-05-03', '1874-05-04',
'1874-05-05', '1874-05-06','1874-05-07']
data1 = ['-7.000', '7.000', '2.000', '11.600', '13.500', '-13.500']
data2 = ['0.000', '25.000', '0.000', '75.000', '12.000', '22.000']
我需要绘制一张图表,其中日期在 x 轴上,data1 在 y 轴上。 Data2 需要在图表中绘制点,它们都应该是对应于它们的值的不同颜色。那么我怎样才能用 pcolor 或 pcolormesh 做到这一点呢?
这是我从http://matplotlib.org/examples/pylab_examples/pcolor_demo.html 找到的示例代码,我想知道我的数据可以得到这样的东西吗?这是另一个链接来演示我应该做什么:https://dl.dropboxusercontent.com/u/47527320/diagram.jpg。我可以用 pcolor 得到这样的图表吗?
import matplotlib.pyplot as plt
import numpy as np
dx, dy = 0.15, 0.05
y, x = np.mgrid[slice(-3, 3 + dy, dy),slice(-3, 3 + dx, dx)]
z = (1 - x / 2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
z = z[:-1, :-1]
z_min, z_max = -np.abs(z).max(), np.abs(z).max()
plt.subplot(2, 2, 1)
plt.pcolor(x, y, z, cmap='RdBu', vmin=z_min, vmax=z_max)
plt.title('pcolor')
plt.axis([x.min(), x.max(), y.min(), y.max()])
plt.colorbar()
plt.show()
【问题讨论】:
-
我从 matplotlib.org/ 找到了这个,它基本上完全符合我的要求。我只是不知道将我的数据放在这段代码中的哪个位置,以得到我想要的数字的类似图表。
-
(matplotlib.org/examples/pylab_examples/pcolor_demo.html) import matplotlib.pyplot as plt import numpy as np dx, dy = 0.15, 0.05 y, x = np.mgrid[slice(-3, 3 + dy, dy), slice(-3, 3 + dx, dx)] z = (1 - x / 2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) z = z[:-1, :-1] z_min, z_max = -np.abs(z).max(), np.abs(z).max() plt.subplot(2, 2, 1) plt.pcolor( x, y, z, cmap='RdBu', vmin=z_min, vmax=z_max) plt.title('pcolor') plt.axis([x.min(), x.max(), y.min() , y.max()]) plt.colorbar() plt.show()
-
我看不出您发布的示例情节链接与您在问题中描述的内容(没有日期,没有彩色圆点)之间有任何联系。请检查链接,找到更贴切的示例,或解释连接。
-
能否编辑您的帖子以包含代码?
-
您只提供三个 1D 系列,对于
pcolor(mesh),您需要一个用于 x、y 和 z 值的三个 2D 数组。即使那样我也怀疑你是否想使用pcolor。
标签: matplotlib