如何基于df的列绘制面积图并叠加折线,支持双Y轴分别展示?
实现方案
你可以通过matplotlib的双Y轴接口twinx()分别绘制面积图和折线,完整实现代码如下:
import pandas as pd import matplotlib.pyplot as plt # 已提前加载好你的df数据,先把日期列设为索引方便绘图 df = df.set_index('index') # 生成左Y轴,用于展示面积图的人数量级数据 fig, ax1 = plt.subplots(figsize=(10, 6)) df[['Alive Past & Future', 'Alive Past']].plot.area(stacked=False, ax=ax1, alpha=0.7) ax1.set_ylabel('人数统计') ax1.legend(loc='upper left') # 生成右Y轴,用于展示折线的百分比数据 ax2 = ax1.twinx() df['%'].plot(ax=ax2, color='crimson', marker='o', linewidth=2, label='占比') ax2.set_ylabel('占比') ax2.legend(loc='upper right') plt.show()
补充说明:
- 双Y轴完全隔离两类数据的数值范围,不会出现量级差异导致的某类数据显示异常问题
- 可以自行调整
alpha(面积透明度)、折线颜色、标记样式、画布尺寸等参数优化显示效果 - 如果需要把百分比显示为0-100的格式,只需要在绘图前加一行
df['%'] = df['%'] * 100即可
内容的提问来源于stack exchange,提问作者Gal
相关产品推荐
相关产品推荐

