使用openpyxl将单元格引用设为XY散点图数据系列名称的问题
你需要调整Series对象的title属性赋值即可实现需求,错误点是你误用了不存在的SeriesLabel属性,正确修改如下:
核心修改代码
替换你原来设置系列名称的两行代码:
# 错误写法 series = Series(values, xvalues, title_from_data=False) series.SeriesLabel = xl.chart.data_source.StrRef( "'Sheet'!C3") # 正确写法 series = Series(values, xvalues) series.title = xl.chart.data_source.StrRef("'Sheet'!C3")
Series对象的title属性原生支持StrRef类型的单元格引用赋值,和图表标题的引用逻辑一致,调整后生成的Excel文件中,修改Sheet工作表C3单元格的内容,图表对应系列的名称会同步更新,完全符合绑定单元格引用的需求。
完整修改后的测试代码
import numpy as np import pandas as pd import openpyxl as xl from tkinter import filedialog from openpyxl import load_workbook from openpyxl import Workbook from openpyxl.chart import ( ScatterChart, Reference, Series, ) from openpyxl.drawing.line import LineProperties from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.trendline import Trendline sampleData = [["Data1","Title goes here:","Dummy Title"], ["CFM", "SP","HP"], [5000,0.1,4.0], [4500,0.2,4.1], [4000,0.3,4.2], [3500,0.5,4.2], [3000,0.8,4.2], [2500,1.1,4.2], [2000,1.5,4.2], [1500,1.8,4.2], [1000,2.0,4.3] ] wb = Workbook() ws = wb.active for row in sampleData: ws.append(row) c1 = ScatterChart() c1.title = "" c1.title.tx.strRef = xl.chart.data_source.StrRef( "'Sheet'!C1") xvalues = Reference(ws, min_col=1, min_row=3, max_row=11) values = Reference(ws, min_col=2, min_row=2, max_row=11) # 仅修改此处两行代码即可 series = Series(values, xvalues) series.title = xl.chart.data_source.StrRef("'Sheet'!C3") c1.series.append(series) ws.add_chart(c1, "B15") wb.save("default.xlsx")
内容的提问来源于stack exchange,提问作者jimmyfiris
相关产品推荐
相关产品推荐

