【发布时间】:2019-02-21 16:39:07
【问题描述】:
我想绘制一个以 timedeltas 作为索引的 pandas 系列并自定义 x-tick 格式。最小的example 是:
import pandas as pd
import matplotlib.pyplot as plt
times = ['Wed Feb 20 08:28:04 PST 2019', 'Wed Feb 20 09:29:04 PST 2019', 'Wed Feb 20 10:30:04 PST 2019']
timestamps = [pd.Timestamp(t) for t in times]
timedeltas = [t - timestamps[0] for t in timestamps]
timedeltas
ts = pd.Series([1, 2, 5], index=timedeltas)
ts.plot()
plt.savefig("/tmp/plot.png")`
Which produces the following
[output][1].
我想将时间增量格式化为 [小时]:[分钟]。
添加
import matplotlib.dates as mdates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
导致以下错误:
ValueError: Cannot convert -1000000000000 to a date. This often happens if non-datetime values are passed to an axis that expects datetime objects.
【问题讨论】:
-
matplotlib.dates严格要求单位为天。熊猫情节可能使用完全不同的单位。因此,matplotlib 格式化程序和定位器一般不适用于熊猫图。在许多情况下,您可以使用x_compat=True,但不能用于时间增量。如果您需要使用 matplotlib 格式化程序,请先将时差转换为天数。
标签: python pandas matplotlib timedelta