gpt4 book ai didi

python - 将 Pandas DataFrame 与时间序列一起使用时,对散点图中的标记进行着色

转载 作者:行者123 更新时间:2023-12-01 09:27:08 24 4
gpt4 key购买 nike

当使用包含时间序列的 Pandas DataFrame 时,我正在努力弄清楚如何使用 Matplotlib 制作散点图。我希望在 x 轴上使用日期/时间,并在 y 轴上绘制另一列的相应值。我可以让它工作,但我还想根据第三列的值对数据点进行着色。我在网上找到的所有示例似乎都解决了某种错误。

可重现的示例如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

mydatetimes=pd.to_datetime(['2015-05-01 18:00:12', '2015-05-01 18:01:12',
'2015-05-01 18:02:12', '2015-05-01 18:03:12',
'2015-05-01 18:04:12', '2015-05-01 18:05:11',
'2015-05-01 18:06:11', '2015-05-01 18:07:11',
'2015-05-01 18:08:12', '2015-05-01 18:09:12',
'2015-05-01 18:10:12', '2015-05-01 18:11:12'])

myvalues = np.array([45.0, 34.0, 35.0, 45.0, 23.0, 67.0,
78.0, 23.0, 87.0, 32.0, 58.0, 71.0])

myothervalues = np.array([803, 743, 682, 622, 562, 502,
383, 323, 263, 202, 142, 82])

mydatadf = pd.DataFrame({'mydates': mydatetimes, 'data1': myvalues, 'data2': myothervalues})

plt.plot(mydatadf.mydates, mydatadf.data1, '.', c=cm.viridis(mydatadf.data2))
plt.show()

有谁知道一个简单的方法吗?

最佳答案

如果您希望每个点都有自己的颜色,则应该使用 plt.scatter 而不是 plt.plot。还绘制值。您只需将情节线更改为:

# Set the plot limit
marg = pd.Timedelta(1, 'm')
_ = plt.xlim(mydatadf.mydates.min()-marg, mydatadf.mydates.max()+marg)

plt.scatter(mydatadf.mydates.values, mydatadf.data1.values,
c=mydatadf.data2.values)
plt.show()

enter image description here

关于python - 将 Pandas DataFrame 与时间序列一起使用时,对散点图中的标记进行着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50293736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com