You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Seaborn绘制按类别着色的日期散点图?附解决代码

日期X轴、类别着色的散点图实现方案

我查了大量示例,但大多是复杂绘图的边缘案例,也找了不少帮助。我只需要画一张X轴为日期、Y轴为数值、点按类别着色的散点图,一开始接近目标,但图里显示了早于预期起始日期的内容。调整并参考建议后问题解决,以下是可用代码:

Seaborn + Matplotlib 实现

# 绘图
# 导入必要库
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 创建示例数据集
pen = sns.load_dataset('penguins')
# 生成日期序列,匹配数据集行数
pen['dates'] = pd.date_range(start='2012-01-01', end='2013-06-01')[:344]
# 筛选所需列并删除缺失值
pen = pen[['dates','flipper_length_mm','sex']].dropna()

# 用掩码筛选指定日期范围的数据
mask = (pen['dates'] >= '2012-04-01')
pen2 = pen.loc[mask]

# 创建散点图
fig, ax = plt.subplots(figsize=(12,12))
# 按性别区分点的颜色
ax = sns.scatterplot(x='dates', y='flipper_length_mm', data=pen2, hue="sex", ax=ax) 

# 限制X轴日期范围,避免显示早于预期的内容
ax.set(xlim=('2012-04-01', '2013-01-01'))

Plotnine 实现

from plotnine import *
from mizani.breaks import date_breaks
from mizani.formatters import date_format

(
    ggplot(pen, aes(x='dates', y='flipper_length_mm', color='sex'))
    + geom_point()  # 添加散点
    + scale_x_datetime(breaks=date_breaks('1 month'))  # X轴按月份分隔
    + theme(axis_text_x=element_text(rotation=90, hjust=1))  # X轴标签旋转90度,方便阅读
    + labs(title="企鹅鳍肢长度随日期分布")  # 添加图表标题
)

内容的提问来源于stack exchange,提问作者Harlan Nelson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:10:31