如何使用python-pptx修改PPT图表plot area(绘图区)的填充颜色
解决python-pptx修改图表绘图区填充色不生效的问题
错误原因
原有代码的问题有两个:
- 不需要手动创建新的
<c:PlotArea>节点,chart对象本身已经包含现成的PlotArea节点,新增重复节点不会被识别 - 填充属性不能直接挂载在PlotArea节点下,需要先创建形状属性节点
<c:spPr>,再将填充配置放在该节点下
正确实现代码
前置导入
from pptx import Presentation from pptx.chart.data import CategoryChartData from pptx.enum.chart import XL_CHART_TYPE from pptx.oxml import OxmlElement from pptx.util import Inches
核心修改逻辑
# 原有图表创建代码保持不变 graphic_frame = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data) chart = graphic_frame.chart # 1. 获取现有PlotArea节点 plot_area = chart._element.plot_area # 可选:删除已有的形状属性节点,避免原有配置冲突 for exist_spPr in plot_area.findall("c:spPr"): plot_area.remove(exist_spPr) # 2. 创建形状属性节点并插入到PlotArea shape_properties = OxmlElement("c:spPr") plot_area.insert(0, shape_properties) # 3. 配置纯色填充规则 solid_fill = OxmlElement("a:solidFill") shape_properties.append(solid_fill) # 4. 设置RGB色值,这里对应你需要的(222, 235, 247) rgb_node = OxmlElement("a:srgbClr") rgb_node.set("val", f"{222:02x}{235:02x}{247:02x}") solid_fill.append(rgb_node)
内容的提问来源于stack exchange,提问作者user3727554
相关产品推荐
相关产品推荐

