Python 带有日期时间的自定义比例

Python 带有日期时间的自定义比例,python,pandas,matplotlib,Python,Pandas,Matplotlib,我试图为时间序列的特殊绘图实现自定义比例(源自matplotlib.scale.ScaleBase)和自定义转换(源自matplotlib.transforms.transform),因此它仅用于x轴和某种形式的日期时间数据,即numpy datetime数组或pandasDateIndex 转换需要知道x值表示的实际时间,但不幸的是,浮点被传递到转换。transform\u non\u affine方法中,它不知道时间单位是什么(秒?分钟?小时?天?) 如果我这样做: t = pd.date_

我试图为时间序列的特殊绘图实现自定义比例(源自
matplotlib.scale.ScaleBase
)和自定义转换(源自
matplotlib.transforms.transform
),因此它仅用于x轴和某种形式的日期时间数据,即numpy datetime数组或pandas
DateIndex

转换需要知道x值表示的实际时间,但不幸的是,浮点被传递到
转换。transform\u non\u affine
方法中,它不知道时间单位是什么(秒?分钟?小时?天?)

如果我这样做:

t = pd.date_range('20160420 07:42', '20160421 12:12', freq='30T')
ts = pd.Series(np.arange(t.size), index=t)
import matplotlib.pyplot as plt
plt.gca().set_xscale('myscale')
ts.plot()
我看到以下打印件:

[ 24352302.  24354012.] float64
[ 24352302.] float64
[ 24353280.] float64
[ 24354012.] float64
[ 24352380.] float64
[ 24352560.] float64
[ 24352740.] float64
[ 24352920.] float64
[ 24353100.] float64
[ 24353280.] float64
[ 24353460.] float64
[ 24353640.] float64
[ 24353820.] float64
[ 24354000.] float64
[ 24352302.  24352302.] float64
[ 24352302.  24352302.] float64
[ 24352302.] float64
[ 24352302.] float64
[ 24352302.] float64
[ 24352302.] float64
[ 24353280.  24353280.] float64
[ 24353280.  24353280.] float64
[ 24353280.] float64
[ 24353280.] float64
[ 24353280.] float64
[ 24353280.] float64
[ 24353280.] float64
[ 24354012.  24354012.] float64
[ 24354012.  24354012.] float64
... 
[ 13.  13.] float64
[ 0.] float64
[ 0.] float64
[ 0.] float64
[ 0.] float64
[ 0.] float64
[ 0.] float64
[ 0.] float64
[ 0.  1.] float64
[ 0.  1.] float64
...
[ 24352302.  24352332.  24352362.  24352392.  24352422.  24352452.
  24352482.  24352512.  24352542.  24352572.  24352602.  24352632.
  24352662.  24352692.  24352722.  24352752.  24352782.  24352812.
  24352842.  24352872.  24352902.  24352932.  24352962.  24352992.
  24353022.  24353052.  24353082.  24353112.  24353142.  24353172.
  24353202.  24353232.  24353262.  24353292.  24353322.  24353352.
  24353382.  24353412.  24353442.  24353472.  24353502.  24353532.
  24353562.  24353592.  24353622.  24353652.  24353682.  24353712.
  24353742.  24353772.  24353802.  24353832.  24353862.  24353892.
  24353922.  24353952.  24353982.  24354012.] float64
...
该长数组是datetimes的实际数组,看起来它已转换为以分钟为单位的浮点:

.>>> np.datetime64(24352302, 'm')
numpy.datetime64('2016-04-20T02:42-0500')

有什么想法可以绕过这个问题吗?

如果您包含一个可复制的示例,这会很有帮助。@IAS使用一个小示例编辑…您可以使用中的代码格式化轴。只需将函数
func
更改为调用
np.datetime64
。如果包含一个可复制的示例,这将非常有用。@IAS使用一个小示例编辑…您可以使用中的代码格式化轴。只需将函数
func
更改为调用
np.datetime64
.>>> np.datetime64(24352302, 'm')
numpy.datetime64('2016-04-20T02:42-0500')