Matplotlib柱状图中限制处的误差棒

4

我想让误差线显示在置信区间的边界上,而不是中心。

这是我想要的效果:

enter image description here

但我得到的是这个:

enter image description here

要绘制条形图,我使用了这个:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(12345)

df = pd.DataFrame([np.random.normal(32000,200000,3650), 
                   np.random.normal(43000,100000,3650), 
                   np.random.normal(43500,140000,3650), 
                   np.random.normal(48000,70000,3650)], 
                  index=[1992,1993,1994,1995])
df1 = df.T
df1.columns = ['1992', '1993','1994','1995']
a = df1.describe()
means = a.loc['mean'].values.tolist()
stdevs = a.loc['std'].values.tolist()
counts = a.loc['count'].values.tolist()
index = np.arange(len(df1.columns))

CI = []
for i in range(len(means)):
    CIval = 1.96*stdevs[i]/(counts[i]**(0.5))
    CI.append(CIval)

#print(means, CI)

plt.figure()
fig, ax = plt.subplots(figsize=(10,10))
ax.set_xticks(index)
ax.set_xticklabels(df1.columns)

plt.bar(index, means, xerr = 0.1, yerr=CI)
plt.tight_layout()
plt.show()
1个回答

3
错误条已显示如预期。您为x误差设置了0.1,但在预期结果图像中,没有x误差条,因此可以将其删除。其次,我们可以通过在调用plt.bar()时使用capsize=来增加错误条的capsize,以使其实际可见:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(12345)

df = pd.DataFrame([np.random.normal(32000,200000,3650),
                   np.random.normal(43000,100000,3650),
                   np.random.normal(43500,140000,3650),
                   np.random.normal(48000,70000,3650)],
                  index=[1992,1993,1994,1995])
df1 = df.T
df1.columns = ['1992', '1993','1994','1995']
a = df1.describe()
means = a.loc['mean'].values.tolist()
stdevs = a.loc['std'].values.tolist()
counts = a.loc['count'].values.tolist()
index = np.arange(len(df1.columns))

CI = []
for i in range(len(means)):
    CIval = 1.96*stdevs[i]/(counts[i]**(0.5))
    CI.append(CIval)

fig, ax = plt.subplots(figsize=(10,10))
ax.set_xticks(index)
ax.set_xticklabels(df1.columns)

plt.bar(index, means, yerr=CI, capsize=10)
plt.tight_layout()
plt.show()

enter image description here


谢谢。保留capsize=和xerr=会产生奇怪的结果! - ZakS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接