如何解决openpyxl生成的折线图在Excel中每行单独成系列的问题
解决openpyxl生成折线图在MS Excel中多系列显示的问题
你的问题出在openpyxl添加数据时的数据方向设置上:默认情况下,add_data方法会按行识别数据系列,导致Excel把每一行都当成单独系列,而Numbers做了自动适配所以显示正常。只要修改add_data的参数,指定按列读取数据就能解决。
修改后的完整可运行代码如下:
from datetime import date from openpyxl import Workbook from openpyxl.chart import LineChart, Reference wb = Workbook() ws = wb.active rows = [ ['Date', 'Force'], [date(2015,9, 1), 4], [date(2015,9, 2), 9], [date(2015,9, 3), 11] ] for row in rows: ws.append(row) # 逐行写入工作表数据 chart = LineChart() chart.title = "Force Measurements" chart.y_axis.title = "Force (LBS)" chart.x_axis.title = "Date" # 选中Force列的所有数据(含标题) data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=4) # 关键修改:添加from_rows=False,指定按列生成单个数据系列 chart.add_data(data, titles_from_data=True, from_rows=False) # 补充:将日期列设置为X轴分类数据,让图表正确关联日期 cats = Reference(ws, min_col=1, min_row=2, max_row=4) chart.set_categories(cats) ws.add_chart(chart, "D5") wb.save("force_measurements.xlsx")
核心修改说明:
from_rows=False:默认参数为True,会把选中区域的每行数据拆成单独系列;设置为False后,openpyxl会把整列数据作为一个系列,正好符合你的需求。chart.set_categories(cats):这一步将日期列绑定为X轴的分类数据,避免Excel把X轴显示为默认的序列编号,让图表逻辑更完整。
修改后在MS Excel中打开,图表会只显示一个名为"Force"的折线系列,和Numbers中的显示效果一致。
内容的提问来源于stack exchange,提问作者lilbiscuit
相关产品推荐
相关产品推荐

