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()
链接地址: http://www.djcxy.com/p/67602.html
上一篇: 如何在条形图中设置y轴上的值