如何在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
相关产品推荐
相关产品推荐

