如何在python的极坐标中绘制误差线?

时间:2014-10-27 08:33:16

标签: 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()

但我想添加错误栏,我找不到任何足够的解决方案。是否已经有一些prebuild matplotlib代码?或者有谁知道如何正确定义误差线?据我了解,r误差只是一条直线,而θ误差应该是圆的一段。

2 个答案:

答案 0 :(得分:4)

关于错误栏的限制是使用hlinevline集合绘制大写字母,因此大写不能在极坐标中正确旋转(有一个问题,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()

polar plot with error bars

如果你想要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()

对于小错误,这不会产生任何影响,但对于大错误很重要。

答案 1 :(得分:0)

我会推荐这样的东西:

import numpy as np
import pylab as plt

fig = plt.figure()
ax = plt.axes(polar=True)

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)))

ax.plot(theta, r, "ro")
ax.errorbar(theta, r, xerr=0.5, yerr=0.4)

plt.show()

但似乎有一些问题。我不知道它是pylab固有的。有点不知道该做什么:)