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

如何在Matplotlib中设置饼图的精确半径(如1.5英寸)?

如何在Matplotlib中精确设置饼图半径为1.5英寸

嘿,这个需求我之前也碰到过!确实,调整figure尺寸没法直接控制饼图本身的大小——得从饼图所在的坐标轴入手,结合比例换算来实现精确的英寸半径设置。

核心思路

饼图是绘制在正方形坐标轴上的(否则会变形),饼图的实际半径等于坐标轴边长的一半。所以要得到1.5英寸的半径,我们需要让坐标轴的边长为3英寸(直径),再让饼图占满这个坐标轴的可用空间。

具体实现步骤&代码示例

import matplotlib.pyplot as plt

# 创建一个足够容纳3英寸宽坐标轴的figure,这里设为6x6英寸(你可以根据需要调整)
fig = plt.figure(figsize=(6, 6))

# 计算坐标轴的尺寸比例:我们需要坐标轴宽3英寸,所以比例 = 目标英寸数 / figure宽度
target_diameter_inch = 3  # 对应1.5英寸半径
axis_ratio = target_diameter_inch / fig.get_figwidth()

# 添加居中的正方形坐标轴:left和bottom设为(1-比例)/2,确保坐标轴在figure中间
ax = fig.add_axes([(1 - axis_ratio)/2, (1 - axis_ratio)/2, axis_ratio, axis_ratio])

# 绘制饼图,设置radius=1(让饼图占满坐标轴的一半空间,刚好对应1.5英寸半径)
labels = ['类别A', '类别B', '类别C', '类别D']
sizes = [15, 30, 45, 10]
ax.pie(sizes, labels=labels, radius=1)

# 强制坐标轴为正方形(pie默认会设置,但手动添加更保险)
ax.set_aspect('equal')

plt.show()

关键细节说明

  • add_axes的参数是[left, bottom, width, height],其中前两个是坐标轴在figure中的位置比例(0-1范围),后两个是坐标轴的尺寸比例(相对于figure的宽/高)。我们通过换算把英寸转换成比例,确保坐标轴的实际尺寸是3英寸。
  • radius=1是pie函数的相对参数,意思是饼图的半径等于坐标轴边长的一半——刚好对应我们要的1.5英寸。
  • 不管你怎么调整figure的dpi,这个设置都能保持精确的英寸尺寸,因为figsize本身就是以英寸为单位的,比例换算不受dpi影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:45:03