contourf()将日期时间对象的二维数组作为轴中断

时间:2012-12-14 17:35:27

标签: python datetime numpy matplotlib

我正在使用matplotlib的{​​{1}}函数将contourf数据显示为zx的函数。如果ynumpy是1-d数组,我可以使用datetime数组的x个对象作为x轴。但是,当我将yx数组设为二维时,y会在contourf个对象的二维数组上中断。示例如下:

datetime

此示例有效并产生预期结果。但是,如果我这样做:

import numpy as np
from datetime import datetime,timedelta
import matplotlib.pyplot as plt

x = np.array([datetime(2012,12,12),datetime(2012,12,13),datetime(2012,12,14)])
y = np.arange(10)
z = np.random.random((10,3))

plt.contourf(x,y,z)

以便x = np.tile(np.reshape(x,( 1,3)),(10,1)) y = np.tile(np.reshape(y,(10,1)),( 1,3)) xy形状z(10,3)产生此追溯:

contourf(x,y,z)

如果我使用Traceback (most recent call last): File "./test_2d_datetime.py", line 14, in <module> plt.contourf(x,y,z) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/matplotlib/pyplot.py", line 2206, in contourf ret = ax.contourf(*args, **kwargs) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/matplotlib/axes.py", line 7322, in contourf return mcontour.QuadContourSet(self, *args, **kwargs) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/matplotlib/contour.py", line 1106, in __init__ ContourSet.__init__(self, ax, *args, **kwargs) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/matplotlib/contour.py", line 700, in __init__ self._process_args(*args, **kwargs) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/matplotlib/contour.py", line 1119, in _process_args x, y, z = self._contour_args(args, kwargs) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/matplotlib/contour.py", line 1166, in _contour_args x,y,z = self._check_xyz(args[:3], kwargs) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/matplotlib/contour.py", line 1194, in _check_xyz x = np.asarray(x, dtype=np.float64) File "/home/disk/mako/milan/epd/epd-7.3-1-rh5-x86_64/lib/python2.7/site-packages/numpy/core/numeric.py", line 235, in asarray return array(a, dtype, copy=False, order=order) TypeError: float() argument must be a string or a number 值的二维数组而不是matplotlib.dates.date2num()个对象,datetime将按预期工作。

我遇到的问题是否有补救措施?我在64位Linux上使用Python contourf()和matplotlib 2.7.3

0 个答案:

没有答案