Python 如何更改熊猫时间序列图的x刻度密度?

Python 如何更改熊猫时间序列图的x刻度密度?,python,matplotlib,pandas,plot,time-series,Python,Matplotlib,Pandas,Plot,Time Series,我正在尝试生成一个较小的数字来可视化熊猫的时间序列。但是,自动生成的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', per

我正在尝试生成一个较小的数字来可视化熊猫的时间序列。但是,自动生成的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
模块或通过设置一些
对象属性来解决此问题?我试着玩
ax.freq
对象,但实际上什么都做不到。

您可以传递一个x轴值列表,希望显示在稠密的绘图()中

另一个清晰的例子

df = pd.DataFrame(np.random.randn(10,3))
不指定xtick的打印

df.plot(legend=False)

用xticks参数绘图

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

嗯,这很有趣。使用这个xticks关键字参数,我有时可以控制一些输入,但方式很奇怪-例如,对于
['00:00']
,它打印出06:00、12:00、18:00。对于你提到的10,22案例,它会永远循环。我添加了另一个例子是的,对于整数索引,它更容易一些-你也可以调用
locator\u params(nbins=8)
来降低密度。问题是,此方法不适用于时间戳索引,其中此函数将引发
AttributeError:TimeSeries\u DateLocator实例没有属性“set\u params”
df.plot(xticks=[2,4,6,8],legend=False)