Python 如何更改熊猫时间序列图的x刻度密度?
我正在尝试生成一个较小的数字来可视化熊猫的时间序列。但是,自动生成的x记号不适应新的大小,并导致重叠记号。我想知道如何调整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
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)