如何使条形图中的条形图不从0开始(matplotlib)

如何使条形图中的条形图不从0开始(matplotlib),matplotlib,bar-chart,Matplotlib,Bar Chart,这是我的代码: 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

这是我的代码:

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])
df = df.T
media = df.mean()
error = df.std()
plt.bar([1,2,3,4], media, yerr=error)
plt.show()
我想要的是,这些条从轴的底部开始,而不是从0开始。像这个


我还需要绘制错误条,它是赋值的一部分。

查看matplotlib文档,它支持一个可用于设置垂直基线的底部参数。您还需要将“高度”参数调整相同的量

offset = df.min().min()
plt.bar([1,2,3,4], media - offset, yerr=error, bottom=offset)
plt.show()
但是,您应该只在非常罕见的情况下才需要这样做,例如数据帧表示日志级别上的值

正如评论,不在Y=0开始的条码通常被认为是对数据的误导,它会误导读者,在这种情况下,你可能会想一个盒子图来代替:

df = pd.DataFrame([np.random.normal(32000,200000,3500), 
                   np.random.normal(43000,100000,3500), 
                   np.random.normal(43500,140000,3500), 
                   np.random.normal(48000,70000,3500)])
plt.boxplot(df)
plt.show()

非常感谢。我知道在这种情况下不应该使用条形图,但作业要求这样做。我对你的回答很满意,它很有用。