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数组或pandasDateIndex
转换需要知道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')