Matplotlib绘图条形图,最大长度为

时间:2016-07-01 12:42:43

标签: matplotlib graph

我正在使用Matplotlib绘制条形图。我的大多数数据值都在-10到+30的范围内。但是,我有两个数据值约为-300。

当我绘制数据时,-300数据值栏看起来太大,它隐藏了其他栏的见解。有没有办法可以在-10到+30范围内绘制所有条形图,在-30处剪切-300条,然后写一个标签" -300"?

1 个答案:

答案 0 :(得分:3)

使用ax.set_ylim()设置ylimits,使用ax.annotate来编写标签(如果愿意,还可以使用箭头)。

例如:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(1)

y = [-5, 10, 25, -10, 30, -300, 20, 30, -10, -300, 0, 4]
x = range(len(y))

ax.bar(x, y, width=1, alpha=0.5)

ymin, ymax = -15, 35
ax.set_ylim(ymin, ymax)

for xbar,ybar in zip(x,y):

    if ybar < ymin:

        ax.annotate(
                ybar, 
                xy=(xbar+0.5, -14), 
                xytext=(xbar+0.5, -8),
                rotation=90, ha='center', va='center',
                arrowprops=dict(arrowstyle="->"))

plt.show()