gpt4 book ai didi

Python-PPTX 面积图透明度

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:28 24 4
gpt4 key购买 nike

我有一个使用 Python PPTX 创建的面积图,我需要设置系列的填充透明度。我已经通过下面的解决方法实现了这一点,但它似乎太复杂了。我希望 python-pptx 提供实用功能,这样就不需要破解 lxml 了。

from lxml.etree import Element, SubElement, QName
ns = "http://schemas.openxmlformats.org/drawingml/2006/main"

xPr = prs.slides[3].placeholders[17].chart.series[0].format.fill._xPr
srgbClr = xPr.get_or_change_to_solidFill().get_or_change_to_srgbClr()
alpha = SubElement(srgbClr, QName(ns ,'alpha'), nsmap={'a':ns})
alpha.set('val','50196')

实现这一目标的更简洁的方法是什么?

最佳答案

嗯,我不确定它是否干净很多,但如果你想使用python-pptx尽可能多地调用,这可能是考虑的替代方案:

from pptx.dml.color import RGBColor
from pptx.oxml.xmlchemy import OxmlElement

# ---set the fill to solid red using regular python-pptx API---
chart_fill = prs.slides[3].placeholders[17].chart.series[0].format.fill
chart_fill.solid()
chart_fill.fore_color.rgb = RGBColor(255, 0, 0)

# ---add an `a:alpha` child element---
solidFill = chart_fill.fore_color._xFill
alpha = OxmlElement('a:alpha')
alpha.set('val', '50196')
solidFill.srgbClr.append(alpha)

总体概念是python-pptx API 对象如 chartformat是 lxml 元素的代理对象。 API 对象在私有(private)变量中组成(“包装”)lxml 元素对象。例如,对于自动形状,私有(private)变量为 Shape._sp 。只要有可能(几乎总是),该变量就与元素具有相同的名称,例如 _sp对于 <p:sp> 。有时元素可以有不同的名称。在这种情况下,我将变量部分替换为 x 。所以_xFill有时可能是 a:solidFill 对象,有时可能是 a:pattFill 对象。

此外,不久前我开始使用 ._element作为代理元素的变量名称,因此它是标准化的。通常我两者都有(例如 _sp_element 引用相同的元素对象),因为它们在不同的情况下都很方便。

要知道变量名是什么,您可以猜测(一旦您知道了模式,这种方法的工作频率就比您预期的要高),或者您可以检查代码或内省(introspection)对象。单击[source]找到正确的代理对象后,访问 API 文档中的链接是检查代码的快速方法。 http://python-pptx.readthedocs.io/en/latest/api/dml.html#pptx.dml.color.ColorFormat

关于Python-PPTX 面积图透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com