我试图生成一个可视化的熊猫时间序列的较小图形。但是,自动生成的X刻度不会适应新的大小,并导致刻度重叠。我想知道如何调整X线的频率?例如。对于此示例:

figsize(4, 2)

num = 3000
X = linspace(0, 100, num=num)
dense_ts = pd.DataFrame(sin(X) + 0.1 * np.random.randn(num),
                        pd.date_range('2014-01-1', periods=num, freq='min'))

dense_ts.plot()


我得到的数字是:



我可以使用Matplotlib日期绘图解决此问题,但这不是一个很好的解决方案-代码要求我根据情况指定所有输出格式。

figsize(4, 2)

from matplotlib import dates

fig, ax = plt.subplots()
ax.plot_date(dense_ts.index.to_pydatetime(), dense_ts, 'b-')
ax.xaxis.set_minor_locator(dates.HourLocator(byhour=range(24),
                                           interval=12))
ax.xaxis.set_minor_formatter(dates.DateFormatter('%H:%m'))
ax.xaxis.set_major_locator(dates.WeekdayLocator())
ax.xaxis.set_major_formatter(dates.DateFormatter('\n\n%a\n%Y'))

plt.show()




我想知道是否有办法使用pandas plotting模块或通过设置某些axes对象属性来解决此问题?我尝试使用ax.freq对象,但实际上无法实现任何目的。

最佳答案

您可以传递一个要显示在density_ts.plot()中的x轴值的列表

dense_ts.plot(xticks=['10:01','22:01'...])


为了清楚起见的另一个例子

df = pd.DataFrame(np.random.randn(10,3))


不指定xticks的图

df.plot(legend=False)




用xticks参数绘制

df.plot(xticks=[2,4,6,8],legend=False)

关于python - 如何更改 Pandas 时间序列图的x点的密度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27248884/

10-10 06:39