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

在Python中如何将圆等分为36份并实现指定可视化效果?

问题:将圆等分为36份的Python实现

背景

我在Python中处理一个涉及投影几何节点(X、Y坐标)的任务,已通过以下代码绘制出包含几何图形及外围圆的图表:

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()
# 其他plt.scatter或plt.plot代码
plt.scatter(x_new, y_new)                             # x_new和y_new是坐标列表
circle1 = plt.Circle((0, 0), radius=4, fill = False)  # 圆心(0,0)、半径4的空心圆
ax.add_patch(circle1)
ax.axis('equal')
plt.show()

现有图表显示一个以原点为中心的空心圆,内部分布着若干散点。

需求

需要将该圆等分为36份,实现从圆心向外绘制36条射线,把圆均匀分割成36个扇形的效果。

解决方案

可以借助numpy生成均匀分布的角度,计算每个角度对应的圆周上的点,再从圆心向这些点绘制直线即可。修改后的完整代码如下:

from matplotlib import pyplot as plt, patches
import numpy as np

plt.rcParams["figure.figsize"] = [9.00, 6.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot()

# 绘制原有散点
plt.scatter(x_new, y_new)

# 绘制外围圆
circle1 = plt.Circle((0, 0), radius=4, fill=False)
ax.add_patch(circle1)

# 将圆36等分,生成36个均匀分布的角度(0到2π,不含终点避免重复)
angles = np.linspace(0, 2 * np.pi, 36, endpoint=False)
radius = 4

# 遍历每个角度,绘制从圆心到圆周的射线
for angle in angles:
    x = radius * np.cos(angle)
    y = radius * np.sin(angle)
    ax.plot([0, x], [0, y], color='black', linewidth=0.8)

ax.axis('equal')
plt.show()

关键说明

  • np.linspace(0, 2*np.pi, 36, endpoint=False):生成0到2π之间的36个均匀间隔角度,endpoint=False确保最后一个角度不会和第一个角度重复,避免画出重复的射线。
  • 每个角度对应的圆周坐标通过三角函数计算:x = 半径*cos(角度),y = 半径*sin(角度)。
  • 用ax.plot([0,x], [0,y])绘制从原点(0,0)到圆周点(x,y)的直线,实现分割效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:36:23