Tay*_*lor 5 python plot time-series matplotlib pandas
我有两个不同年份的时间序列存储在熊猫数据框中。例如:
data15 = pd.DataFrame(
[1,2,3,4,5,6,7,8,9,10,11,12],
index=pd.date_range(start='2015-01',end='2016-01',freq='M'),
columns=['2015']
)
data16 = pd.DataFrame(
[5,4,3,2,1],
index=pd.date_range(start='2016-01',end='2016-06',freq='M'),
columns=['2016']
)
Run Code Online (Sandbox Code Playgroud)
我实际上正在使用每日数据,但是如果这个问题得到了足够的解答,我可以弄清楚其余的一切。
我想做的是将这些不同数据集的图叠加到从1月到12月的单个图上,以比较不同年份之间的差异。我可以通过为其中一个数据集创建一个“假”索引来做到这一点,以便它们具有共同的年份:
data16.index = data15.index[:len(data16)]
ax = data15.plot()
data16.plot(ax=ax)
Run Code Online (Sandbox Code Playgroud)
但是我想尽可能避免弄乱索引。这种方法的另一个问题是,年份(2015)将出现在我不希望的x轴刻度标签中。有谁知道更好的方法吗?
一种方法是在第一个轴上覆盖透明轴,并在其中绘制第二个数据帧,但随后您需要同时更新两个轴的 x 限制(类似于twinx)。然而,我认为这需要更多的工作,并且还有一些缺点:例如,您无法再轻松地以交互方式缩放到特定区域,除非您确保两个轴通过其 x 限制链接。实际上,最简单的方法是通过“弄乱索引”来考虑偏移量。
至于刻度标签,您可以通过指定 x-tick 格式轻松更改格式,使其不显示年份:
import matplotlib.dates as mdates
month_day_fmt = mdates.DateFormatter('%b %d') # "Locale's abbreviated month name. + day of the month"
ax.xaxis.set_major_formatter(month_day_fmt)
Run Code Online (Sandbox Code Playgroud)
查看用于指定日期格式的 matplotlib API 示例。
| 归档时间: |
|
| 查看次数: |
3813 次 |
| 最近记录: |