0

I am trying to plot a stacked bar graph. However, I am not able to reduce the spacing between bars. I want to keep the bars narrow but no space between the bars or very less space.

I am using the following code:

 #!/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()
glennsl
  • 28,186
  • 12
  • 57
  • 75

1 Answers1

0

The function bar()'s params are same as follows:

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

What you should see is left parameter. That represents the starting point of each bar.

In your code

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

So in order to decrease width, you just need to make something like below

[0.3,0.5,0.7]

In this case you should be careful on the parameter width. As you can see width's default value is 0.8

I believe you can adjust it yourself.

DavidG
  • 24,279
  • 14
  • 89
  • 82
JessieB
  • 177
  • 8