You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用python-pptx库创建半圆环形图?

使用python-pptx创建半圆环形图的方案

python-pptx本身**没有内置的半圆环形图(半甜甜圈图)**类型,但可以通过两种方式实现:

方法1:修改环形图的XML属性

python-pptx生成的环形图基于Open XML格式,我们可以直接修改其底层XML,将环形图的显示角度限制为180度,从而变成半圆环形。

示例代码:

from pptx import Presentation
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches

# 创建PPT并添加幻灯片
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])

# 添加普通环形图
x, y, cx, cy = Inches(1), Inches(1), Inches(8), Inches(4)
chart = slide.shapes.add_chart(
    XL_CHART_TYPE.DOUGHNUT, x, y, cx, cy
).chart

# 设置图表数据
chart_data = chart.chart_data
chart_data.categories = ['A', 'B', 'C', 'D']
chart_data.add_series('Series 1', [15, 30, 25, 30])

# 修改XML将环形图转为半圆
# 获取图表的pie元素(环形图属于pie chart的变种)
pie = chart._chartSpace.chart.plotArea.plots[0]._element
# 设置角度范围:起始0度,结束180度(显示上半圆)
pie.catAx.scaling.max.val = 180
pie.catAx.scaling.min.val = 0

# 调整环形的厚度(可选)
pie.donutHoleSize.val = 60  # 百分比,值越大环形越细

prs.save('semi_donut.pptx')

方法2:用Matplotlib生成图片后插入

如果修改XML的方式过于复杂,可以先用Matplotlib画出半圆环形图,保存为图片再插入到PPT中。

示例代码:

from pptx import Presentation
from pptx.util import Inches
import matplotlib.pyplot as plt

# 用Matplotlib生成半圆环形图
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 25, 30]

fig, ax = plt.subplots()
# 设置为半圆:startangle=90,counterclock=False,wedgeprops设置宽度
wedges, texts = ax.pie(
    sizes, labels=labels, startangle=90, counterclock=False,
    wedgeprops={'width': 0.4},  # 环形厚度
    pctdistance=0.8  # 百分比标签位置
)
# 设置坐标轴为圆形,确保是正半圆
ax.set_aspect('equal')
# 隐藏下半部分(通过设置y轴范围)
ax.set_ylim(0, 1)
plt.savefig('semi_donut.png', bbox_inches='tight', transparent=True)
plt.close()

# 插入图片到PPT
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
pic = slide.shapes.add_picture(
    'semi_donut.png', Inches(1), Inches(1), width=Inches(8)
)

prs.save('semi_donut_from_image.pptx')

注意:第一种方法的XML修改需要依赖python-pptx的内部结构,不同版本可能有细微差异;第二种方法更直观,但需要额外安装Matplotlib。

内容的提问来源于stack exchange,提问作者hjun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:35:00