如何解决如何使barplot中的条形不从0开始matplotlib
这是我的代码:
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,np.random.normal(43500,140000,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开始。像这样一个I used paint to show it
我还需要绘制误差线,这是作业的一部分。
解决方法
查看matplotlib.pyplot.bar的matplotlib文档,它支持bottom
参数,该参数可用于设置垂直基线。您还需要将高度参数调整相同的数量。
offset = df.min().min()
plt.bar([1,2,3,4],media - offset,yerr=error,bottom=offset)
plt.show()
但是,仅在非常罕见的情况下才需要这样做,例如,数据框表示对数刻度上的值。
正如Trenton McKinney所评论的那样,不是从y = 0开始的条形图通常被认为是数据的错误表示(这会误导读者),在这种情况下,您可能需要考虑使用箱线图:
df = pd.DataFrame([np.random.normal(32000,200000,3500),np.random.normal(43000,100000,np.random.normal(43500,140000,np.random.normal(48000,70000,3500)])
plt.boxplot(df)
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。