如何绘制matplotlib中不同组的直方图
我有一张桌子,如:
value type
10 0
12 1
13 1
14 2
生成一个虚拟数据:
import numpy as np
value = np.random.randint(1, 20, 10)
type = np.random.choice([0, 1, 2], 10)
我想用matplotlib(v1.4)在Python 3中完成一项任务:
value
的直方图 type
分组,即使用不同的颜色来区分类型 identity
,即箱子的宽度为1 问题是:
type
的值为条形分配颜色并在色彩映射中绘制颜色(例如, Accent
或matplotlib中的其他cmap)? 我不想使用命名的颜色(即'b', 'k', 'r'
) 请注意 (以免邮寄投票并被视为“天真”)
pandas.plot
了两个小时,但没有得到所需的直方图。 matplotlib.pyplot
完成任务,不需要导入一堆模块,比如matplotlib.cm
, matplotlib.colors
。 对于第一个问题,我们可以创建一个等于1的虚拟列,然后通过对该列进行求和来生成计数,并按值和类型进行分组。
对于第二个问题,您可以使用colormap
参数直接将colormap传递给plot
:
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/67601.html
上一篇: How to plot a histogram by different groups in matplotlib