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

Python matplotlib绘制带次Y轴短柱图如何实现Excel同款效果

Python双Y轴图表绘制问题

需求

实现和Excel生成效果一致的双Y轴图表,配置要求:

  • X轴:维度为Stock
  • 主Y轴(y1):以分组柱状图展示百分比格式的Q1、Q2、Q3 Result数据
  • 次Y轴(y2):以散点/无连线线段形式展示百分比格式的Net Exposure数据

现有代码

import pandas as pd
import matplotlib.pyplot as plt

data = {'Stock': ['A', 'B', 'C'],
'Q1 Result': [-0.005, 0.02, 0.0434],
'Q2 Result': [0.0248, 0.003, 0.0051],
'Q3 Result': [0.0723, 0.0071, -0.0035],
'Net Exposure': [0.8511, 0.5873,-0.4671]}

df = pd.DataFrame(data)
 
ax=df.plot.bar(x = 'Stock', y = ['Q1 Result', 'Q2 Result','Q3 Result'])
ax2=df.plot.line(x = 'Stock', y = ['Net Exposure'])
df.plot.line(ax=ax.twinx(), secondary_y=range(-100, 100))

当前代码运行效果

当前代码输出的错误图表

目标参考效果(Excel生成)

Excel生成的目标参考图

问题原因&修正代码

原代码存在3个核心错误:

  1. 单独调用df.plot.line()会生成独立新画布,无法和柱状图在同一张图展示
  2. secondary_y参数用途为指定需要放到次轴的列名,传入坐标范围属于参数误用
  3. 未设置坐标轴百分比格式,Net Exposure未配置为无连线的标记点样式,和Excel效果不符

修正后可直接运行的代码:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter

data = {'Stock': ['A', 'B', 'C'],
'Q1 Result': [-0.005, 0.02, 0.0434],
'Q2 Result': [0.0248, 0.003, 0.0051],
'Q3 Result': [0.0723, 0.0071, -0.0035],
'Net Exposure': [0.8511, 0.5873,-0.4671]}
df = pd.DataFrame(data)

# 绘制主Y轴分组柱状图
fig, ax = plt.subplots()
df.plot.bar(x='Stock', y=['Q1 Result', 'Q2 Result', 'Q3 Result'], ax=ax, width=0.8)
# 主Y轴配置百分比格式
ax.yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=1))

# 创建次Y轴,绘制无连线的圆点标记,匹配Excel的Net Exposure展示样式
ax2 = ax.twinx()
df.plot.line(
    x='Stock', 
    y='Net Exposure', 
    ax=ax2, 
    linestyle='',  # 取消点之间的连线
    marker='o',    # 设置圆点标记
    color='#FF00FF', # 匹配Excel的洋红色标记
    markersize=8
)
# 次Y轴配置百分比格式,设置和Excel一致的-100%~100%显示范围
ax2.set_ylim(-1, 1)
ax2.yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=0))

# 分开设置两个轴的图例位置,避免遮挡
ax.legend(loc='upper left')
ax2.legend(loc='upper right')
plt.tight_layout()
plt.show()

运行后输出效果和Excel版本完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:45:44