如何修改DataLabel填充(使用纯色填充颜色)?

时间:2019-05-23 20:51:43

标签: python-3.6 python-pptx

我正在尝试编辑我正在幻灯片上写的图表的数据标签。我可以使用可用的方法访问datalabel的文本,但到目前为止datalabel.fill还不存在。如果将来不打算将任何变通方案添加到库中,则欢迎任何变通方法。

我已经遍历了github(https://github.com/scanny/python-pptx)中的源代码,但是datalabel类仅具有字体,has_text_frame,position,text_frame,_dLbl,_get_or_add_dLbl,_get_or_add_rich,_get_or_add_txrrich,_get_or_add_txPrrich,_get_or_add_txrex, 。没有填充或行填充方法。

我正在运行的脚本对表中的单元格执行类似的操作:

    cell.fill.solid()
    cell.fill.fore_color.rgb = color_list[((col>0)*1)][i%2]

我正在考虑使用如下代码复制图表系列数据标签上的功能:

    label.fill.solid()
    label.fill.rgb = RGBColor(0x9B,0xBB,0x59)
    label.fill.alpha = Alpha(.2)
    label.line.fill.solid()
    label.line.rgb = RGBColor(0xF0,0xF0,0x00)

预期的输出xml应该为数据标签添加以下内容:

    <c:spPr>
     <a:solidFill>
      <a:srgbClr val="9BBB59">
       <a:alpha val="80000"/>
      </a:srgbClr>
     </a:solidFill>
     <a:ln>
      <a:solidFill>
       <a:schemeClr val="F0F000"/>
      </a:solidFill>
     </a:ln>
    </c:spPr>

不存在实际输出,因为没有直接执行此操作的方法。

1 个答案:

答案 0 :(得分:0)

此功能尚未实现,但如果已实现 ,则它将是.format对象上的DataLabel属性。

通常,用户可以通过在通常直接操作基础XML的客户端代码中添加通常称为“替代功能”的“替代方法”来解决API缺口,在这种情况下,可以在其中添加<c:spPr>子树正确的地方。

就父元素而言,

python-pptx通常可以使您接近。在这种情况下,它可以使您进入<c:dLbl>元素,如下所示:

data_label = chart.series[0].points[0].data_label
dLbl = data_label._dLbl
print(dLbl.xml)

._dLbl中最重要的下划线是您暗示您正在进入内部,如果事情进展不顺利,则说明您做错了事,不是要报告的问题。

dLbl对象是lxml.etree._Element对象,可以使用该API进行操作。如果您在“ python-pptx解决方法功能”中进行搜索,则会找到一些示例,说明如何创建新元素并将其放置在所需位置。

任何.xml XML元素对象上可用的python-pptx属性在检查过程中很方便。 opc-diag也可以方便地检查PowerPoint或python-pptx生成的PPTX文件以进行分析或诊断。