API 级别尚不支持在 python-pptx 中创建所谓的“多图”图表。因此,如果您想这样做,则必须为该部分编写自己的代码。
然而,python-pptx 的内部结构可以提供很多支持,包括在添加额外绘图后提供完全访问权限。
完整的食谱将超出这种问答形式,但这里是一般要点。
PowerPoint 演示文稿本质上是一个大的 XML 层次结构。一般策略是找到正确的父元素,然后使用可用的最佳方法将正确的子 XML 层次结构(表示新图)添加到该父元素。
因此,您希望首先发现感兴趣的邻域中的多图 XML 层次结构是什么样的。opc-diag 对此很有帮助。使用具有两个图(可能是线和条)的图表创建单张幻灯片演示。使用 opc-diag 转储chart1.xml
零件并搜索lineChart
andbarChart
元素。如果您从折线图开始,您的工作就是添加在barChart
那里找到的元素。所以现在你可以清楚地看到你的目标。
您使用 python-pptx 来获取该父元素。在这种情况下,我相信它是c:plotArea
元素。你可以在chart.plots._plotArea
. 这将是一个子类,BaseOxmlElement
它本身就是_Element
来自 lxml 的子类。因此,所有这些操作都由您支配。如果您搜索“python-pptx 变通方法”,您会发现一些示例。这里只是一个方便的提示,您可以使用其.xml
属性为任何元素对象转储 XML。这对于在您学习 XML 操作调用时跟踪您的进度非常有帮助。
然后构建新的子元素并将其添加到正确位置的父元素中,可能使用 .append(),也可能使用 .insert()。另一种方法可能是添加一个虚拟条形图,找到它的c:barChart
元素,执行 deepcopy() 并附加它。如果它有效,那么内部的工作就会少得多。
无论如何,希望能给你一个想法。正如您可能会说的那样,这不是为了胆小的人,但是很多拥有 Python 印章的人已经能够通过这种方法获得他们需要的东西。