pandas 以日期时间格式在共享相同x轴的同一图表上绘制 Dataframe 列中的元素

w46czmvw  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(160)

我有一个 Dataframe :

Element Date                Q

0   A       24/10/2021 17:16    400
1   B       24/10/2021 18:59    210
2   A       26/10/2021 18:42    325
3   A       26/10/2021 19:44    589
4   B       29/10/2021 14:23    251
5   A       01/11/2021 9:12     578
6   B       02/11/2021 21:30    321
7   A       04/11/2021 18:25    248
8   B       05/11/2021 10:29    854
9   A       05/11/2021 10:26    968
10  A       07/11/2021 18:10    852
11  A       09/11/2021 16:35    425
12  B       09/11/2021 21:55    752
13  A       11/11/2021 18:41    385
14  B       13/11/2021 11:15    658
15  A       14/11/2021 18:17    229
16  B       16/11/2021 22:36    258
17  A       17/11/2021 17:05    359
18  A       18/11/2021 16:39    210
19  B       19/11/2021 15:41    583

我想在同一张图的"元素"列中画出共享同一个x轴的两个元素的值"Q",但是我不能得到它。
我曾尝试将它们分离到两个 Dataframe 中,但这不是一个好的解决方案:
第一次
这是两次尝试的结果:

ax = dfA.plot.scatter(x="Date",y="Q",rot=90)
dfB.plot.scatter(x="Date",y="Q",rot=90, ax=ax, color='r')

Graph 1

df_A = df[df['Element'] == 'A'].set_index('Date')
df_B = df[df['Element'] == 'B'].set_index('Date')

plt.figure()

ax = df_A[['Q']].plot(figsize=(20,5))
df_B[['Q']].plot(ax=ax)
ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))

plt.gcf().autofmt_xdate()
plt.show()

Graph 2
我想用一个共同的日期范围表示共享X轴的两组点,我需要一个带有标签"A"和"B"的图例。

jdzmm42g

jdzmm42g1#

如果将Date列转换为时间戳,则第一个属性可能会出错。散点图要求x轴和y轴上的值都是数字。当您在x轴上提供字符串时,它们将被视为位置[0,1,2,3,...],其中 * 刻度线 * 等于所提供的值。

for df in [dfA, dfB]:
    df["Date"] = pd.to_datetime(df["Date"], dayfirst=True)

ax = dfA.plot.scatter(x="Date", y="Q", rot=90, label="A")
dfB.plot.scatter(x="Date", y="Q", rot=90, ax=ax, color="r", label="B")

相关问题