python-pptx 如何让图例显示系列名称而不是类别名称
python-pptx How to make legend show Series name rather than category name
下面的代码生成以下图表:
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Cm
# create presentation with 1 slide ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
x = ['one','two']
specs = {
'height': Cm(7.82),
'width': Cm(14.8),
'left': Cm(2.53),
'top': Cm(5.72)}
data = ChartData()
data.categories = x
data.add_series('Series1', [5,6])
data.add_series('Series2', [4,5])
frame = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, specs['left'],
specs['top'], specs['width'],
specs['height'], data)
chart = frame.chart
chart.has_legend = True
prs.save('chart-01.pptx')
但是,如果我注释掉这一行 data.add_series('Series2', [4,5])
并且只创建一个系列,那么我会得到这个图像:
请注意图例已从引用系列更改为引用类别。
我希望图例继续显示系列名称而不是类别名称。所以我想,在第二张图表中,一个和两个颜色相同,图例显示 Series1。我尝试了各种不同的系列和类别配置,但均未成功。任何帮助将不胜感激。
这是 PowerPoint 的自动行为。我认为这个想法是,对于单变量图表,通常不需要图例,因为每种颜色只出现一次并且与其类别名称相邻(可以这么说 "self-legending")。在这种情况下,人们通常可能会抑制图例并仅依赖类别轴刻度标签。
另一个选项是关闭"different-color-for-each-category",这将导致系列名称出现在图例中。这是由 plot.vary_by_categories
属性:
控制的
chart.plots[0].vary_by_categories = False
下面的代码生成以下图表:
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Cm
# create presentation with 1 slide ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
x = ['one','two']
specs = {
'height': Cm(7.82),
'width': Cm(14.8),
'left': Cm(2.53),
'top': Cm(5.72)}
data = ChartData()
data.categories = x
data.add_series('Series1', [5,6])
data.add_series('Series2', [4,5])
frame = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, specs['left'],
specs['top'], specs['width'],
specs['height'], data)
chart = frame.chart
chart.has_legend = True
prs.save('chart-01.pptx')
但是,如果我注释掉这一行 data.add_series('Series2', [4,5])
并且只创建一个系列,那么我会得到这个图像:
请注意图例已从引用系列更改为引用类别。
我希望图例继续显示系列名称而不是类别名称。所以我想,在第二张图表中,一个和两个颜色相同,图例显示 Series1。我尝试了各种不同的系列和类别配置,但均未成功。任何帮助将不胜感激。
这是 PowerPoint 的自动行为。我认为这个想法是,对于单变量图表,通常不需要图例,因为每种颜色只出现一次并且与其类别名称相邻(可以这么说 "self-legending")。在这种情况下,人们通常可能会抑制图例并仅依赖类别轴刻度标签。
另一个选项是关闭"different-color-for-each-category",这将导致系列名称出现在图例中。这是由 plot.vary_by_categories
属性:
chart.plots[0].vary_by_categories = False