Mad*_*dao 5 python matplotlib polar-coordinates
我有以下问题:我想在python的极坐标中绘制一些数据点,这很容易,使用一些代码
import numpy as np
import matplotlib.pyplot as plt
r = 1e04 * np.array([5.31,5.29,5.25,5.19,5.09,4.92,4.67,4.27,3.75,3.56])
theta = 2*np.pi/360 * np.array(list(range(0, 100, 10)))
plt.polar(theta, r, "ro")
plt.show()
Run Code Online (Sandbox Code Playgroud)
但我想添加错误栏,我找不到任何足够的解决方案.是否已经有一些prebuild matplotlib代码?或者有谁知道如何正确定义误差线?据我所知,r误差只是一条直线,而θ误差应该是一个圆的一部分.
errorbar 的限制是上限是用hline和vline集合绘制的,因此上限无法在极坐标中正确旋转(对此有一个问题,https://github.com/matplotlib/matplotlib/issues/441)。一个近似的解决方法是让大写的大小为零:
import numpy as np
import pylab as plt
fig = plt.figure()
ax = plt.axes(polar=True)
r = np.array([5.31,5.29,5.25,5.19,5.09,4.92,4.67,4.27,3.75,3.56])
theta = 2*np.pi/360 * np.array(list(range(0, 100, 10)))
ax.plot(theta, r, "ro")
ax.errorbar(theta, r, yerr=1, xerr=.1, capsize=0)
plt.show()
Run Code Online (Sandbox Code Playgroud)

如果您希望 theta 误差线是圆形的,则必须自己实现。最简单的方法是
th_err = 1
for th, _r in zip(theta, r):
local_theta = np.linspace(-th_err, th_err, 15) + th
local_r = np.ones(15) * _r
ax.plot(local_theta, local_r, color='k', marker='')
plt.show()
Run Code Online (Sandbox Code Playgroud)
对于小错误,这不会真正产生影响,但对于大错误却很重要。
| 归档时间: |
|
| 查看次数: |
2494 次 |
| 最近记录: |