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

如何用openpyxl交换散点图X/Y轴且不修改Excel数据?

实现openpyxl散点图X/Y轴交换且保留数据标签的方案

核心思路:无需修改工作表内的数据结构,只需在创建散点图系列时,交换x_values和y_values的数据源引用,同时保留title_from_data=True配置即可实现轴的交换。

具体实现代码:

from openpyxl import Workbook
from openpyxl.chart import ScatterChart, Reference, Series

# 初始化工作簿和工作表
wb = Workbook()
ws = wb.active

# 填充示例数据(与官方示例数据结构一致,未修改原始数据顺序)
rows = [
    ["size", "percentage"],
    [10, 20],
    [20, 30],
    [30, 40],
    [40, 50],
    [50, 60],
]
for row in rows:
    ws.append(row)

# 创建散点图实例
chart = ScatterChart()
chart.style = 13
# 设置轴标题,匹配交换后的轴含义
chart.x_axis.title = "percentage"
chart.y_axis.title = "size"

# 关键操作:交换x/y轴的数据源引用
# x_values指向原percentage列(作为横轴数据),y_values指向原size列(作为纵轴数据)
x_vals = Reference(ws, min_col=2, min_row=2, max_row=6)
y_vals = Reference(ws, min_col=1, min_row=2, max_row=6)
# 创建系列并保留title_from_data=True,自动从y_values的上方单元格取标签
series = Series(y_vals, x_values=x_vals, title_from_data=True)

chart.series.append(series)
# 将图表插入工作表
ws.add_chart(chart, "A8")

wb.save("scatter_axis_swapped.xlsx")

细节说明:

  • title_from_data=True会自动从y_values引用范围的上方单元格(即A1的"size")提取系列标签,完全符合需求,无需手动指定标题。
  • 若存在多个数据系列,只需对每个系列重复交换x_values和y_values的数据源引用步骤即可。
  • 轴标题为可选配置,目的是让图表的轴含义更直观,可根据实际需求调整或省略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:54:56