如何在Python中将几何散点与圆心重合的圆合并至同一张绘图
合并散点网格与空心圆到同一张图的实现方案
问题背景与需求
我正尝试在Python中将两种几何图形绘制到同一张图内:
- 已完成由散点构成的网格状几何体绘制,代码如下:
df_1_new = pd.DataFrame() df_1_new['X_coordinate']=pd.Series(x_new) df_1_new['Y_coordinate']=pd.Series(y_new) df_1_new['node_number'] = df_1_new.index df_1_new = df_1_new[['node_number','X_coordinate','Y_coordinate']] plt.scatter(x_new, y_new) plt.show()
- 已绘制空心圆,代码如下:
from matplotlib import pyplot as plt, patches plt.rcParams["figure.figsize"] = [9.00, 6.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax = fig.add_subplot() circle1 = plt.Circle((2, 2), radius=5, fill = False) ax.add_patch(circle1) ax.axis('equal') plt.show()
需求:将两种图形合并到同一张图中,使圆的圆心与几何体的形心(2,2)完全重合,形成圆包裹几何体的效果,求实现代码。
实现代码与说明
核心是共用同一个Matplotlib坐标轴对象来绘制两种图形,同时保证坐标轴比例一致避免圆变形。完整代码如下:
import pandas as pd from matplotlib import pyplot as plt, patches # 配置绘图参数 plt.rcParams["figure.figsize"] = [9.00, 6.50] plt.rcParams["figure.autolayout"] = True # 创建统一的画布与坐标轴 fig, ax = plt.subplots() # 绘制散点网格几何体 df_1_new = pd.DataFrame() df_1_new['X_coordinate'] = pd.Series(x_new) df_1_new['Y_coordinate'] = pd.Series(y_new) df_1_new['node_number'] = df_1_new.index df_1_new = df_1_new[['node_number','X_coordinate','Y_coordinate']] ax.scatter(x_new, y_new) # 基于同一坐标轴绘制散点 # 绘制空心圆,圆心与形心(2,2)重合 circle1 = plt.Circle((2, 2), radius=5, fill=False) ax.add_patch(circle1) # 强制坐标轴比例一致,防止圆被拉伸为椭圆 ax.axis('equal') # 显示图形 plt.show()
关键注意点:
- 所有绘图操作必须基于同一个
ax对象,确保图形在同一张画布内。 ax.axis('equal')不可省略,否则会因坐标轴刻度比例差异导致圆变形。- 确认
plt.show()带有括号,否则图形无法正常渲染。
内容的提问来源于stack exchange,提问作者Urvesh
相关产品推荐
相关产品推荐

