Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中以极坐标绘制误差条?_Python_Matplotlib_Polar Coordinates - Fatal编程技术网

如何在python中以极坐标绘制误差条?

如何在python中以极坐标绘制误差条?,python,matplotlib,polar-coordinates,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")

我有以下问题:我想在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误差只是一条直线,而θ误差应该是圆的一段。

我建议如下:

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所固有的。有点不知所措:)

关于errorbar的限制是,CAP是使用
hline
vline
集合绘制的,因此CAP不能在极坐标中正确旋转(这方面存在一个问题,)。一种近似的解决方法是使封口尺寸为零:

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

如果你想要θ误差条是圆形的,你必须自己实现它。最简单的方法是

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

对于小错误来说,这并没有什么区别,但对于大错误来说,这很重要。

谢谢,这正是我想要的!