title: Python Matplotlib plotting sample means in bar chart with confidence intervals but looks like box plots
body: <p>I want to plot the means of four time-series into a Matplotlib bar chart with confidence intervals. Also I want to color them differently, to generate a bar chart like this <a href="https://i.stack.imgur.com/HmBYh.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/HmBYh.png" alt="enter image description here"></a></p>
  
  <p>So I wrote the following code:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  
  np.random.seed(12345)
  df = pd.DataFrame([np.random.normal(-10, 200, 100), 
                     np.random.normal(42, 150, 100), 
                     np.random.normal(0, 120, 100), 
                     np.random.normal(-5, 57, 100)], 
                    index=[2012, 2013, 2014, 2015])
  years = ('2012', '2013', '2014', '2015')
  y_pos = np.arange(len(years))
  df1_mean = df.iloc[0].mean()
  df1_std = df.iloc[0].std()
  df2_mean = df.iloc[1].mean()
  df2_std = df.iloc[1].std()
  df3_mean = df.iloc[2].mean()
  df3_std = df.iloc[2].std()
  df4_mean = df.iloc[3].mean()
  df4_std = df.iloc[3].std()
  
  value = (df1_mean, df2_mean, df3_mean, df4_mean)
  Std = (df1_std, df2_std, df3_std, df4_std)
  
  plt.bar(y_pos, value, yerr=Std, align='center', alpha=0.5)
  plt.xticks(y_pos, years)
  plt.ylabel('Stock price')
  plt.title('Something')
  plt.show()</code></pre>
  </div>
  </div>
  </p>
  
  <p><a href="https://i.stack.imgur.com/shcCG.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/shcCG.png" alt=""></a></p>
  
  <p>which gives me this (see the above). Not quite what I was expecting. Also, it looks like a box plot instead of a bar chart where each sample means should go all the way down to x-axis.</p>
  
  <p>I admit I am really new to Matplotlib, but I really would like to know what's going on with my code. It's supposed to be a simple task, but I can't seem to get it. Should I invoke .subplots() command instead?
  On top of that, I will really appreciate if someone would be kind enough to point me how to (1) add a horizontal line on the x-axis (say, on the value of 100) on the same bar chart as a threshold value, and (2) color these four bar differently (the exact color of choice doesn't really matter)?</p>
  
  <p>Thank you.</p>