2014-10-27 101 views
5

我有以下问题:我想在Python中,这是很容易极坐标绘制的一些数据点,使用像如何在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() 

一些代码,但我想补充的错误吧,我没有找到任何足够的解有没有预建matplotlib代码?还是有人知道如何正确定义错误栏?据我所知,r-误差只是一条直线,而theta-误差应该是一个圆的一部分。

回答

2

Errorbar的限制是,上限是用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

如果你想的θ误差线是圆形的,你将不得不执行你的自我。最简单的方法是

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

对于小错误,这不会真的有所作为,但会对大错误起作用。

+0

谢谢,那就是我一直在寻找的! – Madao 2014-10-28 08:41:51

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

但seeems出现一些问题。我不知道它是否是固有的pylab。不知道该怎么办:)