将置信区间一个一个地对齐

Align confidence intervals one below the other

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

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

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

当然,我的问题是:在 Python 中是否有一种(非常)简单的方法来做到这一点?

在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

据我所知,没有专门绘制置信区间的图表。但是,您可以使用 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()