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

如何利用自定义函数生成极坐标散点图并绘制正弦极曲线?

解决极坐标曲线无数据点的问题

咱们一步一步来排查你的代码问题,很快就能画出想要的正弦极坐标曲线:

问题根源分析

你的代码有两个核心问题导致只显示框架没数据:

  1. 角度单位不匹配:Matplotlib的极坐标projection='polar'要求角度参数是弧度,但你传入的是0-360的角度值,这会让所有点都跑到极坐标的"外圈以外"(360弧度等于57.3圈,远超默认显示范围),自然看不到。
  2. 数组维度错误:你的自定义函数返回的是三维数组,取出来的Theta和STheta是二维数组(形状(1,72)),而plot需要一维数组作为输入。

另外,你的函数里用循环逐个append元素完全没必要,numpy本身就支持数组直接操作,代码可以大幅简化。

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt

def GenerateTrigonometryTable(x):
    # 直接生成角度数组(0到360,步长x)
    A = np.arange(0, 360, x)
    # 计算正弦、余弦,用deg2rad转弧度更直观
    B = np.sin(np.deg2rad(A))
    C = np.cos(np.deg2rad(A))
    # 返回二维数组,每一行对应一组角度、正弦、余弦值
    return np.column_stack((A, B, C))

# 获取数据并处理成绘图所需格式
trig_table = GenerateTrigonometryTable(5)
theta_rad = np.deg2rad(trig_table[:, 0])  # 把角度转成弧度
s_theta = trig_table[:, 1]

# 绘制极坐标曲线
ax1 = plt.subplot(111, projection='polar')
ax1.plot(theta_rad, s_theta)
# 可选美化:调整极坐标显示习惯
ax1.set_theta_direction(-1)  # 角度顺时针增加
ax1.set_theta_zero_location('N')  # 0度指向正北
ax1.set_rticks([-1, -0.5, 0, 0.5, 1])  # 设置径向刻度

plt.show()

关键改动说明

  • 简化自定义函数:去掉冗余的循环append,直接用np.column_stack生成结构化的二维数组,更高效易读。
  • 统一角度单位:用np.deg2rad将角度值转成弧度,匹配Matplotlib极坐标的要求。
  • 调整数组维度:通过索引trig_table[:, 0]直接获取一维的角度数组,避免二维数组导致的绘图问题。
  • 如果你想要散点图而不是曲线,只需要把ax1.plot改成ax1.scatter(theta_rad, s_theta)就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:22:06