如何减少堆积条形图中条形之间的间距?

时间:2017-09-27 02:17:21

标签: python matplotlib

我正在尝试绘制堆积条形图。但是,我无法减少条之间的间距。我想保持条形窄,但条形之间没有空间或更小的空间。

我使用以下代码:

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 21 16:56:27 2017

@author: Sayali
"""
import seaborn
import matplotlib.pyplot as plt
MA1D = [52.18507078,52.18227723,44.02015981]
MA1S = [47.81492922,47.81772277,55.97984019]
MA1E = [3.32543281,1.563038488,7.179669498]
figure = plt.figure()
figure.text(0.5, 0.04,'Days' , ha='center')
figure.text(0.02, 0.5, 'Amount of time (Percentage)', va='center', 
 rotation='vertical')
plt.subplot(3, 1, 1)
plt.grid(zorder=0,which='major', axis='y', color='silver', ls='dotted' 
)
plt.bar(range(len(MA1D)), MA1D, color='salmon',width=0.1, 
align='center', zorder=2, yerr=MA1E, error_kw=dict(ecolor='red', lw=2, 
capsize=3, capthick=1,zorder=5))
plt.bar(range(len(MA1S)), MA1S, bottom=MA1D, 
color='whitesmoke',width=0.1, align='center', zorder=2 )
plt.box(on=None)
plt.yticks([0,50,100])
 plt.subplots_adjust(left=0.075, right=0.9, top=0.9, bottom=0.1)
plt.subplot(3, 1, 2)
plt.bar(range(len(MA1D)), MA1D)
plt.bar(range(len(MA1S)), MA1S, bottom=MA1D)
plt.box(on=None)
plt.subplot(3, 1, 3)
plt.bar(range(len(MA1D)), MA1D)
plt.bar(range(len(MA1S)), MA1S, bottom=MA1D, 
color='whitesmoke',width=0.1, align='center', zorder=2)

plt.subplots_adjust(wspace=0.07, hspace=0.05)
plt.show()

1 个答案:

答案 0 :(得分:0)

函数bar()的参数如下:

bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)

您应该看到的是left参数。这代表了每个酒吧的起点。

在您的代码中

range(len(MA1D))
# this would be [0,1,2]

因此,为了减少宽度,您只需要制作类似下面的内容

[0.3,0.5,0.7]

在这种情况下,您应该注意参数width。如您所见,width的默认值为0.8

我相信你可以自己调整它。