在Matplotlib中叠加多时间序列:突出加州烟草趋势
实现方法
假设你的DataFrame包含State(州名)、Year(年份)、PacksPerCapita(人均香烟销量)这三列,按以下步骤操作即可实现需求:
分离加州与其他州数据
先把数据拆分为加州数据和非加州数据两个子集:# 筛选非加州数据 non_ca_data = df[df['State'] != 'California'] # 筛选加州数据 ca_data = df[df['State'] == 'California']绘制所有非加州州的细灰度趋势线
遍历每个非加州州的时间序列,用极细的灰度线绘制。这里可以用groupby按州分组后循环:import matplotlib.pyplot as plt # 创建画布 plt.figure(figsize=(10,6)) # 遍历每个非加州州的数据 for state, group in non_ca_data.groupby('State'): # 绘制极细灰度线:浅灰色+极窄线宽+轻微透明度,避免线条重叠过密 plt.plot(group['Year'], group['PacksPerCapita'], color='#cccccc', linewidth=0.4, alpha=0.7)叠加加州的趋势线(突出显示)
最后绘制加州的线,用更醒目的样式,确保它在所有灰度线之上:plt.plot(ca_data['Year'], ca_data['PacksPerCapita'], color='#0066cc', linewidth=2, label='California')完善图表细节
添加标题、坐标轴标签和图例,让图表更清晰:plt.title('Per Capita Cigarette Sales: California vs. Other States') plt.xlabel('Year') plt.ylabel('Packs Per Capita') plt.legend() plt.grid(alpha=0.3) plt.show()
关键参数说明
linewidth=0.4:设置非加州线条的宽度,确保线条极细且不会遮挡彼此color='#cccccc':使用浅灰色,避免抢加州线条的风头alpha=0.7:给灰度线添加轻微透明度,优化重叠区域的视觉效果
内容的提问来源于stack exchange,提问作者Jared Greathouse
相关产品推荐
相关产品推荐

