python - 在不添加额外列的情况下创建颜色基于年份的散点图

我在 csv 表中有这些数据

时间 X Y 2020-07-03T00:00:00Z 0.08 0.30 2021-07-03T00:00:00Z 0.20 0.12 表>

我想在变量 X 和 Y 之间创建一个散点图,并根据及时看到的数据年份为点着色。我知道我可以添加一个包含年份的额外列,但是有没有更优雅的方法来做到这一点而不添加列?

最佳答案

根据年份为散点着色的“廉价”方法是直接使用 matplotlib 的 scatter绘制并传递年份作为 c parameter of scatter 的参数.

这是一个最小的例子:

import datetime
import pandas as pd
from matplotlib import pyplot as plt
mydf = pd.DataFrame((
               (datetime.datetime(2020, 1, 1, 23, 00), 0.08, 0.3),
               (datetime.datetime(2021, 2,2,1,2,55), 0.2, 0.12), 
               (datetime.datetime(2022, 2,3,11, 00), 0.12, 0.7)
           ),
           columns=("TIME", 'X', 'Y')
       )

plt.scatter(mydf.X, mydf.Y, c=mydf.TIME.dt.year)

plt.show()

然后,您可以使用 cmap 参数来指定要应用的颜色图。

https://stackoverflow.com/questions/69407627/

相关文章:

arrays - 当我尝试初始化 100 个元素的一维数组并使用指针填充它时出现段错误(核心已转储)

reactjs - 路由在 webpack + react 项目中不起作用

nestjs - 嵌套类验证器 minDate 即使日期更大也会抛出错误

python - 使用 matplotlib 3.3+ 更改颜色条限制以更改比例

reactjs - 保存我的代码时 Eslint 配置错误

c# - 如何在 dotnet 中将 ""解析为 long ("0")

css - Material-UI 下拉列表在对话框中溢出

r - 根据 R 中表格的列数过滤列表

kotlin-coroutines - Kotest 与 kotlinx-coroutines-te

list - Groovy:比较列表忽略其中元素的顺序