python - 使用 python-pptx 自定义图例位置

标签 python python-pptx

我想将图例设置在自定义的自定义位置。

我的最终目标是获取现有图表的设置,并对新图表使用相同的设置。

我在文档中读到可以这样设置图例:

( http://python-pptx.readthedocs.io/en/latest/api/enum/XlLegendPosition.html#xllegendposition )

from pptx.enum.chart import XL_LEGEND_POSITION

chart.has_legend = True
chart.legend.position = XL_LEGEND_POSITION.CUSTOM

但我收到一个 ValueError:

ValueError: CUSTOM (-4161) not a member of XL_LEGEND_POSITION enumeration

我错过了什么或者如何将图例设置在自定义位置?

最佳答案

我找不到对此问题的完整答案,因此我认为值得发布我使用的解决方法:

from pptx.oxml.xmlchemy import OxmlElement

def SubElement(parent, tagname, **kwargs):
        element = OxmlElement(tagname)
        element.attrib.update(kwargs)
        parent.append(element)
        return element

def manuallySetLegendPosition(
                chart,
                x,
                y,
                w,
                h
                ):
    ## Inside layout, add manualLayout
    L = chart.legend._element.get_or_add_layout()
    mL = L.get_or_add_manualLayout()
    ## Add xMode and yMode and set vals to edge
    xM = SubElement(mL, 'c:xMode', val="edge")
    xY = SubElement(mL, 'c:yMode', val="edge")
    ## Add x, value is between -1 and 1 as a proportion of the chart width
    ##    point of reference on the legend is its centre, not top left
    xE = SubElement(mL, 'c:x', val=str(x))
    ## Add y, same concept as above
    yE = SubElement(mL, 'c:y', val=str(y))
    ## Add w, legend height as a proportion of chart height
    wE = SubElement(mL, 'c:w', val=str(w))
    ## Add h, same concept as above
    hE = SubElement(mL, 'c:h', val=str(h))

关于python - 使用 python-pptx 自定义图例位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48325832/

相关文章:

javascript - 从电话应用程序登录

python - 是否可以使用 python-pptx 组合两个或多个 powerpoint?

python - 如何在python pptx中更改标题颜色

python - 如何将 matplotlib 生成的多个图发送到 pptx 而没有任何重叠?

python - Python 中具有无限小点大小的散点图

python - 如何从 PyQt5 中的 QWidget 内部使用 statusBar().showMessage() ?

python - Tornado 应用程序结构与单元测试

Python 3.3 - 游戏 - 提示系统

python - 如何在幻灯片的特定位置通过 python 将 Excel 文件和链接数据嵌入 PowerPoint