如何不新增额外列,基于TIME列年份为X-Y散点图的点着色
无需新增列的实现方案
以下是不同常用技术栈的实现方式,所有方案都仅实时计算年份用于配色,不会修改原数据集新增额外字段:
Python(Pandas + Matplotlib 方案)
直接将实时提取的年份序列传入颜色参数即可:
import pandas as pd import matplotlib.pyplot as plt # 读取csv时直接解析TIME列为时间格式,不需要额外存储到新列 df = pd.read_csv("your_file.csv", parse_dates=["TIME"]) # 绘图时直接用dt.year从TIME列临时提取年份作为配色依据 scatter = plt.scatter(df["X"], df["Y"], c=df["TIME"].dt.year, cmap="viridis") # 补充颜色条标注对应年份 plt.colorbar(scatter, label="年份") plt.xlabel("X") plt.ylabel("Y") plt.show()
Python(Seaborn 方案)
hue参数直接传入临时生成的年份序列即可:
import seaborn as sns import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("your_file.csv", parse_dates=["TIME"]) sns.scatterplot(data=df, x="X", y="Y", hue=df["TIME"].dt.year, palette="viridis") plt.show()
R 语言(ggplot2 方案)
在美学映射中直接用时间处理函数实时提取年份:
library(tidyverse) library(lubridate) df <- read_csv("your_file.csv") ggplot(df, aes(x = X, y = Y, color = year(ymd_hms(TIME)))) + geom_point() + labs(color = "年份")
补充说明:如果读取数据时没有提前解析TIME列的格式,也可以在提取年份的步骤中临时转换格式,全程都不会新增数据列。
内容的提问来源于stack exchange,提问作者FlubberBeer
相关产品推荐
相关产品推荐

