How to plot a histogram by different groups in matplotlib
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):
value type , ie use different colors to differentiate types identity for bins, ie the width of a bin is 1 The questions are:
type and draw colors from colormap (eg Accent or other cmap in matplotlib)? I don't want to use named color (ie 'b', 'k', 'r' ) Note (lest the post will be down voted and deemed to be "naive")
pandas.plot for two hours and failed to get the desired histogram. matplotlib.pyplot , without import a bunch of modules such as matplotlib.cm , matplotlib.colors . For your first question, we can create a dummy column equal to 1, and then generate counts by summing this column, grouped by value and type.
For your second question you can pass the colormap directly into plot using the colormap parameter:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import seaborn
seaborn.set() #make the plots look pretty
df = pd.DataFrame({'value': value, 'type': type})
df['dummy'] = 1
ag = df.groupby(['value','type']).sum().unstack()
ag.columns = ag.columns.droplevel()
ag.plot(kind = 'bar', colormap = cm.Accent, width = 1)
plt.show()

上一篇: 如何在条形图中设置y轴上的值
