【问题标题】:How to decrease spacing between bars in a stacked bar graph? [duplicate]如何减少堆积条形图中条形之间的间距? [复制]
【发布时间】:2017-09-27 17:29:07
【问题描述】:

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

我正在使用以下代码:

 #!/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()

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    函数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

    相信你可以自己调整。

    【讨论】: