我正在使用matplotlib
的{{1}}函数将contourf
数据显示为z
和x
的函数。如果y
和numpy
是1-d数组,我可以使用datetime
数组的x
个对象作为x轴。但是,当我将y
和x
数组设为二维时,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))
,x
和y
形状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
。