【问题标题】:Plotting date data with pcolor用 pcolor 绘制日期数据
【发布时间】: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


【解决方案1】:

scatter plot 将提供您所描述的内容。

import numpy as np
import pylab as plt
import datetime
dt = datetime.datetime

dates = [dt(1874,05,02), dt(1874,05,03), dt(1874,05,04), dt(1874,05,05), dt(1874,05,06),dt(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]

plt.scatter(dates, data1, c=data2, s=400)

plt.show()

在 cmets 中有一些关于需要 2D 数据的讨论,但我认为这是由于您对所寻找的内容缺乏明确性。您的 mpl 示例链接和您的草图中的绘图类型在本质上完全不同。查看 mpl gallery page,您会发现像您的草图(并且也与您的数据结构非常匹配)正在使用散点图。

这里有很多关于如何处理日期和颜色的选项,但这应该可以帮助您入门。

【讨论】:

  • 谢谢!这真的帮助了我:)
猜你喜欢
  • 1970-01-01
  • 2011-12-18
  • 2020-01-14
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
  • 2016-11-11
  • 2020-07-18
  • 1970-01-01
相关资源
最近更新 更多