如何使用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
相关产品推荐
相关产品推荐

