如何删除 openpyxl 中的图例名称
How to remove a legend name in openpyxl
----------------代码片段----------------
所以代码是这样的。有一些代码可以创建条形图。
# create barChart
barChart= BarChart()
barChartData= Reference(worksheet, min_col=min_col, max_col=max_col, min_row=min_row, max_row=max_row)
barChart.add_data(bar_chart_data, from_rows=True, titles_from_data=True)
barChart.legend.position = 't'
...
然后是一些创建折线图的代码。
# create lineChart
lineChart= LineChart()
lineChartData= Reference(worksheet, min_col=min_col + 1, max_col=max_col, min_row=max_row + 1,
max_row=max_row + 1)
lineChart.add_data(compare_chart_data, from_rows=True)
...
然后有一些代码可以在条形图的顶部添加折线图。
# combine both charts on top of each other
lineChart.y_axis.crosses = "min"
barChart+= lineChart
----------------代码段结束----------------
所以发生的事情是,图表结果有一个图例说
- 香蕉
- 苹果
- 橘子
- 系列 4
Bananas, Apples and Oranges 是条形图数据系列的名称。系列 4,应该是折线图的图例。我想删除它,我已尝试执行以下项目。
我是 python 的新手,我不知道如何删除由 openpyxl 创建的 table 中的图例“Series 4”。
barChart += lineChart
我试过设置下面的代码(添加后),但它删除了所有内容。
barChart.legend = None
我也试过设置下面的代码(添加之前),但它什么也没做。
lineChart.legend = None
不知何故,我觉得它自动 - 在添加过程中创建图例名称 Series 4...
为了测试,我尝试设置
titles_from_data = True
但这只是将图例名称更改为 0%。
我不想将它设置为另一个值,我只是想摆脱它。
-----更新-----
我在WBM推荐的评论部分找到了一个link尝试更新LegendEntry属性中的记录。它看起来像这样。
bar_chart.legend.LegendEntry = [(openpyxl.chart.legend.LegendEntry(3, delete=1))]
还是没用。
为了调查,我尝试在添加上述代码之前和之后打印出 LegendEntry 属性的内容。
在添加代码之前,令人惊讶的是,结果是空的。
[]
添加代码后,它看起来像这样。
Parameters: [idx=3, delete=True, txPr=None]
尽管更新了 LegendEntry,但输出仍然保持不变:
- 香蕉
- 苹果
- 橘子
- 系列 4
根据您的错误代码到 openpyxl documentation,我们找到用法:
openpyxl.chart.legend.Legend(legendEntry=())
所以你在 legendEntry 中输入你想要将数字更新到的列表。我相信你的情况会是
chartABC.legend.Legend(legendEntry=(['test', 'test', 'test']))
我正在使用 openpyxl 3.0.9。
查看源代码以获取灵感并让它发挥作用:
import openpyxl
chart.x_axis = openpyxl.chart.axis.TextAxis(delete=True)
更多代码如下:
CHART_ROW = 11
CHART_HEIGHT = 12
DATA_TABLE_START_ROW = 34
LENGTH_DIST_START_COL = 1
SPACER_DIST_START_COL = LENGTH_DIST_START_COL + 10
SPACER_RANGE_START_COL = SPACER_DIST_START_COL + 6
。 . . .
chart = BarChart()
chart.style = style # 1 = black line, 13 = green bold line
chart.title = "Spacer Distribution Summary"
chart.height = CHART_HEIGHT # default is 7.5
chart.width = 7 # default is 15
chart.y_axis.title = 'Target Spacer Frequency'
chart.x_axis = openpyxl.chart.axis.TextAxis(delete=True)
values = Reference(self.sheet,
min_col=SPACER_DIST_START_COL + 1,
max_col=SPACER_DIST_START_COL + 1,
min_row=self.spacer_distribution_first_row,
max_row=self.spacer_distribution_last_row)
series = Series(values, title_from_data=False)
chart.series.append(series)
# chart.legend = None
pos = f"{column_string(SPACER_DIST_START_COL)}{CHART_ROW}"
self.sheet.add_chart(chart, pos)
----------------代码片段----------------
所以代码是这样的。有一些代码可以创建条形图。
# create barChart
barChart= BarChart()
barChartData= Reference(worksheet, min_col=min_col, max_col=max_col, min_row=min_row, max_row=max_row)
barChart.add_data(bar_chart_data, from_rows=True, titles_from_data=True)
barChart.legend.position = 't'
... 然后是一些创建折线图的代码。
# create lineChart
lineChart= LineChart()
lineChartData= Reference(worksheet, min_col=min_col + 1, max_col=max_col, min_row=max_row + 1,
max_row=max_row + 1)
lineChart.add_data(compare_chart_data, from_rows=True)
... 然后有一些代码可以在条形图的顶部添加折线图。
# combine both charts on top of each other
lineChart.y_axis.crosses = "min"
barChart+= lineChart
----------------代码段结束----------------
所以发生的事情是,图表结果有一个图例说
- 香蕉
- 苹果
- 橘子
- 系列 4
Bananas, Apples and Oranges 是条形图数据系列的名称。系列 4,应该是折线图的图例。我想删除它,我已尝试执行以下项目。
我是 python 的新手,我不知道如何删除由 openpyxl 创建的 table 中的图例“Series 4”。
barChart += lineChart
我试过设置下面的代码(添加后),但它删除了所有内容。
barChart.legend = None
我也试过设置下面的代码(添加之前),但它什么也没做。
lineChart.legend = None
不知何故,我觉得它自动 - 在添加过程中创建图例名称 Series 4...
为了测试,我尝试设置
titles_from_data = True
但这只是将图例名称更改为 0%。
我不想将它设置为另一个值,我只是想摆脱它。
-----更新-----
我在WBM推荐的评论部分找到了一个link尝试更新LegendEntry属性中的记录。它看起来像这样。
bar_chart.legend.LegendEntry = [(openpyxl.chart.legend.LegendEntry(3, delete=1))]
还是没用。
为了调查,我尝试在添加上述代码之前和之后打印出 LegendEntry 属性的内容。
在添加代码之前,令人惊讶的是,结果是空的。
[]
添加代码后,它看起来像这样。
Parameters: [idx=3, delete=True, txPr=None]
尽管更新了 LegendEntry,但输出仍然保持不变:
- 香蕉
- 苹果
- 橘子
- 系列 4
根据您的错误代码到 openpyxl documentation,我们找到用法:
openpyxl.chart.legend.Legend(legendEntry=())
所以你在 legendEntry 中输入你想要将数字更新到的列表。我相信你的情况会是
chartABC.legend.Legend(legendEntry=(['test', 'test', 'test']))
我正在使用 openpyxl 3.0.9。
查看源代码以获取灵感并让它发挥作用:
import openpyxl
chart.x_axis = openpyxl.chart.axis.TextAxis(delete=True)
更多代码如下:
CHART_ROW = 11
CHART_HEIGHT = 12
DATA_TABLE_START_ROW = 34
LENGTH_DIST_START_COL = 1
SPACER_DIST_START_COL = LENGTH_DIST_START_COL + 10
SPACER_RANGE_START_COL = SPACER_DIST_START_COL + 6
。 . . .
chart = BarChart()
chart.style = style # 1 = black line, 13 = green bold line
chart.title = "Spacer Distribution Summary"
chart.height = CHART_HEIGHT # default is 7.5
chart.width = 7 # default is 15
chart.y_axis.title = 'Target Spacer Frequency'
chart.x_axis = openpyxl.chart.axis.TextAxis(delete=True)
values = Reference(self.sheet,
min_col=SPACER_DIST_START_COL + 1,
max_col=SPACER_DIST_START_COL + 1,
min_row=self.spacer_distribution_first_row,
max_row=self.spacer_distribution_last_row)
series = Series(values, title_from_data=False)
chart.series.append(series)
# chart.legend = None
pos = f"{column_string(SPACER_DIST_START_COL)}{CHART_ROW}"
self.sheet.add_chart(chart, pos)