我有一个2列的df
,我用x轴表示日期,y轴表示第一个数据。
然后,我以以下方式使次要数据与第一数据相关联:辅助数据是一个字典,其中key
是日期,value
是向量。该日期对应于也存在于第一数据集(图)中的特定日期。
在向量的索引20处,该值对应于日期(键)的意义上,向量包括过去和未来值。
我想在第一个图的日期上对齐。任何解决方案都可以(子图,叠加,两个不同的轴)。
理想情况下,我希望将两个数据集绘制在同一个图中,但正确对齐蓝线,如下所示。
下面是一些玩具代码来说明一个例子和问题:
import pandas as pd, numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
# data
df=pd.DataFrame({'date':pd.date_range('2020-11-30', periods=31),'temp':np.arange(1,32)})
# secondary data for date '2020-12-15', key is date and value is a vector. In this vector index 20 corresponds to the date '2020-12-15'
ml = {'2020-12-15':list(np.random.rand(56))}
fig, axes = plt.subplots(2,1, dpi=120)
axes = axes.flatten()
axes[0].plot(df.date, df.temp, '-o', c='orange', label='T')
axes[0].tick_params(which='major', labelrotation=90)
axes[1].plot(ml['2020-12-15'], '-o', c='blue', label='ML: 2020-12-15')
plt.tight_layout()
plt.show()
字符串
的数据
1条答案
按热度按时间alen0pnh1#
要做到这一点,你需要做两件事。第一个是创建与值对应的日期列表。为此,我为
ml
创建了一个pandasDataFrame
,然后创建了一个date
列,该列在索引20处具有所需的日期。但如果你只是画出来,两个坐标轴就不会对齐。要解决这个问题,您需要在创建子图时设置sharex=True
。字符串
的数据
P.S.你在代码的最后开始对
tight_layout
和show
使用plt
。虽然这样做有效,但您应该坚持使用一个API,无论是显式的“Axes”API(这是您在创建子图并使用ax
时所做的)还是隐式的“pyplot”API(使用plt
)。有关文档,请参阅此链接。