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

如何将Matplotlib绘制的图表形状修改为圆形?

如何把Matplotlib图表改成圆形外观

我已经用Matplotlib画出了功能正常的图表,但想把它的外观改成圆形。当前的绘图代码如下:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(5,5), dpi=300)
ax = fig.add_axes([0,0,1,1])
ax.plot(30, 80, marker="o", markersize=20, markeredgecolor="#ed6033", markerfacecolor="#ed6033")
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_facecolor('#8cc9e2')

ax.margins(0.1)

plt.setp(ax.get_xticklabels()[4], visible=False) 
plt.xlim(10, 90)
plt.ylim(10, 90)
plt.grid(color='white')
plt.show()

当前的输出是方形图表:
普通方形图表

想要的目标效果是圆形图表:
圆形目标图表


修改方案

要实现圆形外观,核心是让坐标轴显示区域被裁剪成圆形,同时保证xy轴比例一致,避免变形。直接修改代码如下:

import matplotlib.pyplot as plt
from matplotlib.patches import Circle

fig = plt.figure(figsize=(5,5), dpi=300)
ax = fig.add_axes([0,0,1,1])
ax.plot(30, 80, marker="o", markersize=20, markeredgecolor="#ed6033", markerfacecolor="#ed6033")

# 保持原有的坐标轴设置
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_facecolor('#8cc9e2')

# 关键1:设置xy轴等比例,防止圆形被拉伸
ax.set_aspect('equal')

# 关键2:创建圆形裁剪路径,覆盖10-90的坐标范围
circle = Circle((50, 50), 40, transform=ax.transData)
ax.set_clip_path(circle)

# 保持原有的刻度和范围设置
plt.setp(ax.get_xticklabels()[4], visible=False) 
plt.xlim(10, 90)
plt.ylim(10, 90)
plt.grid(color='white')

plt.show()

关键改动说明

  • ax.set_aspect('equal'):强制xy轴的单位长度一致,确保圆形不会因为图表比例变成椭圆
  • Circle((50,50),40):以坐标轴中心(50,50)为圆心,半径40刚好覆盖你设置的10-90坐标范围
  • ax.set_clip_path(circle):用这个圆形作为裁剪边界,只显示圆形内部的图表内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:30:50