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

极坐标图(Polar Plot)点与刻度不对齐问题求助

极坐标图点与刻度不对齐的修复方案

问题根源

你的代码存在两个核心问题:

  • 错误地将theta赋值为字符串列表,而matplotlib极坐标绘图需要的是弧度制的角度数值,并非文本标签。
  • 仅设置了刻度的角度位置,但未将类别标签与这些刻度绑定,导致点的位置和刻度完全不匹配。

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt  # 你之前遗漏了matplotlib的导入

# 存储5个类别的文本标签
theta_labels = ['NH$_4$','TMA','TEA','TPA','TBA']
# 生成均匀分布的弧度角度:5个点,覆盖0到2π范围(不含终点)
theta = np.linspace(0, 2*np.pi, 5, endpoint=False)

TZ2P = [6.76,6.63,6.81,7.06,7.10]
QZ4P = [3.56,3.62,3.79,3.89,3.95]

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
# 使用生成的弧度角度theta绘制数据点
ax.errorbar(theta, TZ2P, capsize=7, fmt="o", c="lightsteelblue", mec='Black', label='PBE / TZ2P')
ax.errorbar(theta, QZ4P, capsize=7, fmt="o", c="darkseagreen", mec='Black', label='PBE / QZ4P')

ax.set_rmax(7.5)
ax.set_rticks([0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5])
ax.set_rlabel_position(-18)
ax.grid(True)
# 绑定刻度角度与对应的文本标签
ax.set_xticks(theta)
ax.set_xticklabels(theta_labels)

plt.legend(frameon=False)
plt.show()

关键修改说明

  • 拆分文本标签与角度数值:用theta_labels存储类别文本,重新生成theta为均匀分布的弧度值,确保每个类别对应一个极坐标角度。
  • 绑定标签与刻度:通过ax.set_xticklabels将文本标签关联到对应的刻度位置,实现点与刻度的精准对齐。
  • 补全缺失依赖:添加了import matplotlib.pyplot as plt,否则代码会因缺少绘图模块报错。
  • 清理冗余代码:删除了与当前绘图无关的r = np.arange(0, 2, 0.01)和旧theta计算代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:05:21