使用openpyxl指定坐标选取数据绘制折线图的问题咨询
问题原因
你当前的代码仅指定了Y轴的身高数值范围,没有单独绑定X轴对应的年份数据,所以图表默认将行序号作为X轴刻度,和预期不符。
实现方法
openpyxl 选取指定坐标范围的数据统一通过 Reference 类实现,你需要额外创建X轴年份的Reference对象,调用set_categories()方法绑定到图表即可,修正后的代码如下:
from openpyxl.chart import LineChart, Reference chart = LineChart() chart.title='Average height' chart.y_axis.title = 'Height' chart.x_axis.title = 'Year' # 定义X轴年份数据范围,示例中假设年份存储在第6列,数据行范围为2~102行,可根据实际表格调整参数 x_data = Reference(working_sheet, min_col=6, min_row=2, max_row=102) # Y轴身高数据范围 values = Reference(working_sheet, min_col = 7, min_row = 1, max_col=9, max_row = 102) chart.add_data(values, titles_from_data=True) # 绑定X轴数据到图表 chart.set_categories(x_data) working_sheet.add_chart(chart, 'K2')
Reference 参数说明
min_col/max_col:要选取数据的起始列、结束列序号,A列对应1,B列对应2,以此类推min_row/max_row:要选取数据的起始行、结束行序号
如果选取的是单列/单行数据,无需填写max_col/max_row参数。
内容的提问来源于stack exchange,提问作者Kerpol
相关产品推荐
相关产品推荐

