I have a table like:
value type
10 0
12 1
13 1
14 2
Generate a dummy data:
import numpy as np
value = np.random.randint(1, 20, 10)
type = np.random.choice([0, 1, 2], 10)
I want to accomplish a task in Python 3 with matplotlib (v1.4):
- plot a histogram of
value
- group by
type
, i.e. use different colors to differentiate types - the position of the "bars" should be "dodge", i.e. side by side
- since the range of value is small, I would use
identity
for bins, i.e. the width of a bin is 1
The questions are:
- how to assign colors to bars based on the values of
type
and draw colors from colormap (e.g.Accent
or other cmap in matplotlib)? I don't want to use named color (i.e.'b', 'k', 'r'
) - the bars in my histogram overlap each other, how to "dodge" the bars?
Note
- I have tried on Seaborn, matplotlib and
pandas.plot
for two hours and failed to get the desired histogram. - I read the examples and Users' Guide of matplotlib. Surprisingly, I found no tutorial about how to assign colors from colormap.
- I have searched on Google but failed to find a succinct example.
- I guess one could accomplish the task with
matplotlib.pyplot
, without import a bunch of modules such asmatplotlib.cm
,matplotlib.colors
.