matplotlib条形图中极限处的错误条
我试图让误差条显示在置信区间的极限,而不是中间 我想要的是: 但我得到的是: 为了绘制条形图,我使用了以下方法:matplotlib条形图中极限处的错误条,matplotlib,bar-chart,errorbar,Matplotlib,Bar Chart,Errorbar,我试图让误差条显示在置信区间的极限,而不是中间 我想要的是: 但我得到的是: 为了绘制条形图,我使用了以下方法: 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(430
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()
错误条按预期显示。您已经为x错误设置了0.1的值,但是在预期的结果图像中,没有x错误条,因此我们可以删除它。其次,我们可以通过调用
plt.bar()
谢谢。将倾覆=和xerr=同时保留会产生奇怪的结果!
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()