我有一个DataFrame(df
),它具有PeriodIndex和对应的整数列(OrderQuantity
)。 (可将其视为关于特定产品一天的销售量的数据)。为了使用matplotlib.pyplot.plot()
对此数据进行一些简单的可视化,我必须将PeriodIndex转换为Timestamp,否则plot()
方法将引发错误TypeError: Axis must have
freq set to convert to Periods
。 MatPlotLib似乎试图将PeriodIndex转换为Periods,而没有意识到它已经具有Periods。
因此,目前,以下工作有效:
import matplotlib.pyplot as plt
%matplotlib inline
fig = plt.figure(figsize=(15,8))
plt.plot(df.index.to_timestamp(), df.OrderQuantity) // produces a valid plot
我想知道是否有一种更好的方法来绘制周期而不必转换为时间戳,该pyplot在生成图形之前会在内部转换回周期。
答案 0 :(得分:0)
pandas.DataFrame.plot()
具有关键字参数ax
,用于明确指定要在其上绘制的轴,因此您可以基于两个(或多个)DataFrame创建图形。例如,
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
np.random.seed(42)
df1 = pd.DataFrame(
np.random.randint(5, 20, size=7), columns=['foo'],
index=pd.period_range('2019-05-30', periods=7, freq='D')
)
df2 = pd.DataFrame(
np.random.randint(15, 40, size=7), columns=['bar'],
index=pd.period_range('2019-05-30', periods=7, freq='D')
)
fig, ax = plt.subplots()
df1.plot(ax=ax)
df2.plot(ax=ax)
plt.show()
将产生以下图。