title: Plot image color histogram using matplotlib
body: <p>I am trying to generate a color histogram of an image. I am using PIL for reading image files and trying to plot the same through matplotlib.  </p>
  
  <pre><code>im = Image.open(sys.argv[1])  
  w, h = im.size  
  colors = im.getcolors(w*h)  #Returns a list [(pixel_count, (R, G, B))]
  </code></pre>
  
  <p><strong>Update</strong>:  After some trial and error this code plots the histogram, but not the colors! (Takes laboriously long consumes ton loads of memory even for a 320x480 jpeg)</p>
  
  <pre><code>for idx, c in enumerate(colors):
      plt.bar(idx, c[0], color=hexencode(c[1]))
  
  plt.show()
  </code></pre>
  
  <p>Where,</p>
  
  <pre><code>def hexencode(rgb):
      return '#%02x%02x%02x' % rgb
  </code></pre>
  
  <p>On execution, the program begins to consume infinite memory and no display is provided. OS memory usage went from &lt; 380 MB to > 2.5 GB in matter of couple of minutes; post which I terminated the execution. How can I get solve the problem?</p>
  
  <p>Here is an example of a color histogram of image with dominant Red shades:</p>
  
  <p><img src="https://i.stack.imgur.com/6LFYf.jpg" alt="This is an example of a color histogram of image with dominant Red shades"></p>