【问题标题】:Align confidence intervals one below the other将置信区间对齐一个低于另一个
【发布时间】:2020-04-20 02:55:17
【问题描述】:

假设我有一个 pandas 数据框,其中有 3 列感兴趣:id(文本)、minmax(浮点数)表示某个参数的置信区间的下限和上限(%),例如:

id   min   max
 A   3.5   7.8
 B  11.35 13.25
 C   0.0   2.0

我想在一个图(如下所示)中表示这些数据,ids 在垂直轴上位于彼此下方,每条线显示相应id 的置信区间的变化。

当然,我的问题是:在 Python 中有(相当)简单的方法吗?

【问题讨论】:

    标签: python dataframe confidence-interval


    【解决方案1】:

    据我所知,没有专门用于绘制置信区间的图表。但是,您可以使用matplotlib.pyplot.barh()。代码如下。

    数据框准备:

    >>> import pandas as pd
    >>> df = pd.DataFrame(
    ...     {
    ...         'id': ['A', 'B', 'C'],
    ...         'min': [3.5, 11.35, 0.0],
    ...         'max': [7.8, 13.25, 2.0]
    ...     }
    ... )
    >>> df = df.sort_values(by='id', ascending=False)
    >>> print(df)
      id    min    max
    2  C   0.00   2.00
    1  B  11.35  13.25
    0  A   3.50   7.80
    

    制作图表:

    >>> import matplotlib
    >>> import matplotlib.pyplot as plt
    >>> plt.style.use('seaborn')
    >>> 
    >>> plt.figure(figsize=(9.5, 2.5))
    >>> plt.barh(df['id'], height=0.5, width=df['max']-df['min'], left=df['min'])
    >>> plt.title('Chart title')
    >>> plt.show()
    

    【讨论】:

    • 感谢@Jaroslav 这个直观的解决方案,它非常适合我知道如何使用 Python 处理。效果很好!
    【解决方案2】:

    在 python 中,我们可以使用下面的代码使用 matplotlib 库来解决它。

    还附上了相同的输出图像。

    import matplotlib.pyplot as plt
    import numpy as np 
    import pandas as pd
    
    
    id = ["A","B","C"]
    min =[3.5,1.35,0.0]
    max =[7.8, 13.25, 2.0]
    
    data = [id,min,max]
    
    df = pd.DataFrame(data)
    df = df.T
    df.columns=["id","min","max"]
    
    
    for index, row in df.iterrows():
        m2m = np.linspace( row['min'],row['max'])
        y_val = np.array([row["id"] for _ in range(len(m2m))])
        plt.plot(m2m, y_val )
    

    Output Image

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2017-01-13
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多