1

matplotlibの関数を使用して、およびの関数としてデータcontourfを表示しています。とが 1 次元配列の場合、オブジェクトの配列をx 軸として使用できます。ただし、配列と配列を 2 次元にすると、オブジェクトの 2次元配列で壊れます。例は次のとおりです。zxynumpydatetimexyxycontourfdatetime

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()代わりに値の 2 次元配列を使用すると、期待どおりに動作します。datetimecontourf()

発生している問題の解決策はありますか? 64 ビット Linux でPython2.7.3と matplotlibを使用しています。1.1.0

4

0 に答える 0