我想知道如何在不使用与图表标题相同的名称的情况下(仅使用散点图)为数据系列分配名称。我想只获得系列名称作为图例,而完全不获得图表标题。
我意识到autoTitleDeleted
的值必须为1。
因此,在查阅文档时,我发现“ chartContainer”是实现上述选项的类。因此,我导入该类并将其应用于下一个:
from openpyxl import Workbook
from openpyxl.chart import (
ScatterChart,
Reference,
Series,
)
from openpyxl.chart.chartspace import ChartContainer
wb = Workbook()
ws = wb.active
rows = [
["Size", "Batch 1", "Batch 2"],
[2, 40, 30],
[3, 40, 25],
[4, 50, 30],
[5, 30, 25],
[6, 25, 35],
[7, 20, 40],
]
for row in rows:
ws.append(row)
chart2 = ScatterChart()
chart2.x_axis.title = "Size"
chart2.y_axis.title = "Percentage"
xvalues = Reference(ws, min_col = 1, min_row = 2, max_row = 7)
values = Reference(ws, min_col = 3, min_row = 1, max_row = 7)
series1 = Series(values, xvalues)
chart2.series.append(series1)
chart2 = ChartContainer(autoTitleDeleted = 1)
ws.add_chart(chart2, "J10")
wb.save("Ex1.xlsx")
但是,出现下一个错误:
`runfile('C:/Users/Administrador/Desktop/Pre-Try/Ex1/Ex1.py',wdir ='C:/ Users / Administrador / Desktop / Pre-Try / Ex1') 追溯(最近一次通话):
文件“”,第1行,在 runfile('C:/Users/Administrador/Desktop/Pre-Try/Ex1/Ex1.py',wdir ='C:/ Users / Administrador / Desktop / Pre-Try / Ex1')
文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”,行文件中的第827行 execfile(文件名,命名空间)
execfile中的文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”,第110行 exec(compile(f.read(),文件名,'exec'),命名空间)
文件“ C:/Users/Administrador/Desktop/Pre-Try/Ex1/Ex1.py”,第46行,在 wb.save(“ Ex1.xlsx”)
文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ openpyxl \ workbook \ workbook.py”,保存中的第397行 save_workbook(自己,文件名)
save_workbook中的文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ openpyxl \ writer \ excel.py”,第294行 writer.save()
文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ openpyxl \ writer \ excel.py”,保存在第276行 self.write_data()
write_data中的文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ openpyxl \ writer \ excel.py”,第76行 self._write_worksheets()
文件_write_worksheets中的文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ openpyxl \ writer \ excel.py”,第219行 self._write_drawing(ws._drawing)
文件_write_drawing中的文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ openpyxl \ writer \ excel.py”,第142行 self._archive.writestr(drawing.path [1:],tostring(drawing._write()))
文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ openpyxl \ drawing \ spreadsheet_drawing.py”,第296行,_write self._rels.append(rel)
UnboundLocalError:分配前已引用局部变量“ rel”
我不太了解这个错误。如果可以的话,将不胜感激!
答案 0 :(得分:0)
chart2 = ChartContainer(autoTitleDeleted = 1)
这就是问题所在:您必须使用openpyxl图表对象,以便库可以管理对象之间的管道:图表是非常复杂的对象,我们尝试隐藏一些复杂性您的想法是正确的-将值设置为True-但这是成功的之所以不能这样工作,是因为ChartContainer
不知道如何将自己添加到XLSX软件包中。
作为解决方法,最简单的方法是创建一个带有空字符串的标题。否则,您可以提交PR,该PR允许将autoTitleDeleted
属性从chartContainers映射到图表,反之亦然。