如何用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
相关产品推荐
相关产品推荐

