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

如何在Python matplotlib绘制的十字图形上额外添加四个相同圆形?

实现代码

完全可以通过Python实现,你遇到的变量未找到报错,一般是漏写了对应圆形变量的ax.add_patch()添加语句,或是变量名拼写不一致导致的。

你可以直接使用下面的完整可运行代码,和你原有写法对齐的版本如下:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# DATA
L = 0.1 #m, length of arm of cross
t = L/2 #m, thickness

# VECTORS OF COORDINATES OF THE CROSS
X = np.array([L, t/2, t/2, -t/2, -t/2, -L, -L, -t/2, -t/2, t/2, t/2, L, L])
Y = np.array([t/2, t/2, L, L, t/2, t/2, -t/2, -t/2, -L, -L, -t/2, -t/2, t/2])

# PLOT
fig, ax = plt.subplots(figsize=(8,8))
ax.plot(X,Y,color='C1', linewidth=2.5)
ax.axis('equal')

# 右端圆
circle_right = plt.Circle((L - t/2, 0), t/4, color='b', fill=False)
ax.add_patch(circle_right)
# 左端圆
circle_left = plt.Circle((-L + t/2, 0), t/4, color='b', fill=False)
ax.add_patch(circle_left)
# 上端圆
circle_top = plt.Circle((0, L - t/2), t/4, color='b', fill=False)
ax.add_patch(circle_top)
# 下端圆
circle_bottom = plt.Circle((0, -L + t/2), t/4, color='b', fill=False)
ax.add_patch(circle_bottom)
# 中心圆
circle_center = plt.Circle((0, 0), t/4, color='b', fill=False)
ax.add_patch(circle_center)

plt.show()

如果你不想重复写多段相似代码,也可以用循环批量生成圆形,代码更简洁:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# DATA
L = 0.1 #m, length of arm of cross
t = L/2 #m, thickness

# VECTORS OF COORDINATES OF THE CROSS
X = np.array([L, t/2, t/2, -t/2, -t/2, -L, -L, -t/2, -t/2, t/2, t/2, L, L])
Y = np.array([t/2, t/2, L, L, t/2, t/2, -t/2, -t/2, -L, -L, -t/2, -t/2, t/2])

# PLOT
fig, ax = plt.subplots(figsize=(8,8))
ax.plot(X,Y,color='C1', linewidth=2.5)
ax.axis('equal')

# 定义所有圆的圆心坐标
circle_centers = [
    (L - t/2, 0), # 右
    (-L + t/2, 0), # 左
    (0, L - t/2), # 上
    (0, -L + t/2), # 下
    (0, 0) # 中心
]
# 循环添加所有圆
for center in circle_centers:
    ax.add_patch(plt.Circle(center, t/4, color='b', fill=False))

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 15:57:03