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

如何使用openpyxl旋转图表X轴标签?是否可采用XML方案?

解决OpenPyXL条形图X轴标签旋转问题

方法一:直接使用OpenPyXL内置属性

OpenPyXL本身支持设置X轴标签的旋转角度,无需直接操作XML,只需添加一行代码即可实现:

# 在设置轴标题之后添加
chart.x_axis.labels.rotation = 45  # 旋转45度,可根据需求调整角度值

修改后的完整代码:

import openpyxl
from openpyxl.chart import BarChart, Reference

# 创建工作簿并激活工作表
wb = openpyxl.Workbook()
sheet = wb.active

# 插入分类标签
sheet.cell(row=1, column=1, value='Category 1.1')
sheet.cell(row=2, column=1, value='Category 1.2 - limit')
sheet.cell(row=3, column=1, value='Category 2')
sheet.cell(row=4, column=1, value='Category 2.1 - extra')
sheet.cell(row=5, column=1, value='Category 2.2 - extra2')

# 插入数值
for i in range(5):
    sheet.cell(row=i+1, column=2, value=i+2)

# 创建条形图
chart = BarChart()
values = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=5)
bar_categories = Reference(sheet, min_col=1, min_row=1, max_row=5)

chart.add_data(values)
chart.set_categories(bar_categories)

chart.title = " BAR-CHART "
chart.legend = None
chart.x_axis.title = " X_AXIS "
chart.y_axis.title = " Y_AXIS "

# 设置X轴标签旋转角度
chart.x_axis.labels.rotation = 45

sheet.add_chart(chart, "E2")
 
# 保存文件
wb.save("barChart.xlsx")

方法二:直接修改XML(内置属性失效时使用)

如果内置属性无法满足需求,可直接操作OOXML底层节点。X轴标签的旋转角度对应XML中<c:txPr>下<a:bodyPr>的rot属性,单位为千分之一度(例如45度对应450000,垂直旋转对应2700000)。

添加以下代码即可:

# 直接修改XML节点设置旋转角度
chart.x_axis._txPr.bodyPr.rot = 450000  # 45度,可调整数值

将这段代码放在轴标题设置之后即可,此方式更灵活,适用于特殊场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:29:52