【问题标题】:How to plot error bars in polar coordinates in python?如何在python中绘制极坐标中的误差线?
【发布时间】:2014-10-28 05:51:45
【问题描述】:

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

【问题讨论】:

    标签: python matplotlib polar-coordinates


    【解决方案1】:

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

    如果您希望 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()
    

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

    【讨论】:

    • 谢谢,这正是我想要的!
    【解决方案2】:

    我会推荐这样的东西:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多