Build a histogram from a dictionary

I created a dictionary that takes into account the entries in the list each key, and now I would like to build a histogram of its contents.

This is the content of the dictionary I want to build:

 {1: 27, 34: 1, 3: 72, 4: 62, 5: 33, 6: 36, 7: 20, 8: 12, 9: 9, 10: 6, 11: 5, 12: 8, 2: 74, 14: 4, 15: 3, 16: 1, 17: 1, 18: 1, 19: 1, 21: 1, 27: 2} 

So far I have written this:

 import numpy as np import matplotlib.pyplot as plt pos = np.arange(len(myDictionary.keys())) width = 1.0 # gives histogram aspect to the bar diagram ax = plt.axes() ax.set_xticks(pos + (width / 2)) ax.set_xticklabels(myDictionary.keys()) plt.bar(myDictionary.keys(), ******, width, color='g') # ^^^^^^ what should I put here? plt.show() 

I tried just to do

 plt.bar(myDictionary.keys(), myDictionary, width, color='g') 

but this is the result:

enter image description here

and I don’t know why 3 bars are shifted, and also I would like the histogram to be displayed in an orderly way.

Can someone tell me how to do this?

+8
python dictionary matplotlib histogram
source share
3 answers

You can use the function to build histograms as follows:

 a = np.random.random_integers(0,10,20) #example list of values plt.hist(a) plt.show() 

Or you can use myDictionary as follows:

 plt.bar(myDictionary.keys(), myDictionary.values(), width, color='g') 
+13
source share

With Python 3, you need to use list(your_dict.keys()) instead of your_dict.keys() (otherwise you get a TypeError: the `dict_keys' object does not support indexing ):

 import matplotlib.pyplot as plt dictionary = {1: 27, 34: 1, 3: 72, 4: 62, 5: 33, 6: 36, 7: 20, 8: 12, 9: 9, 10: 6, 11: 5, 12: 8, 2: 74, 14: 4, 15: 3, 16: 1, 17: 1, 18: 1, 19: 1, 21: 1, 27: 2} plt.bar(list(dictionary.keys()), dictionary.values(), color='g') plt.show() 

enter image description here

Tested with Matplotlib 2.0.0 and python 3.5.

FYI: Putting python dict in order of key values

+8
source share
 values = [] #in same order as traversing keys keys = [] #also needed to preserve order for key in myDictionary.keys(): keys.append(key) values.append(myDictionary[key]) 

Use "keys" and "values". This ensures that order is maintained.

+1
source share

All Articles