使用Scatter plot和Pandas Groupby按组着色

时间:2016-06-25 22:56:48

标签: python pandas matplotlib

我想使用pandas按类别分组,然后在散点图上按该类别进行着色。我想使用pandas对象进行绘图,因为我正在使用pandas列来标记大小,形状等。

当我使用pandas.plot函数绘制它时,我很难看到如何按组颜色(在本例中,由“cat”)。当一个类别中有三个项目时,我在下面使用的方法不起作用,因为它将颜色解释为黑白值数组。因此下面的图不是我想要的,我希望它是CatA的一种颜色,而catB是一种颜色。

感谢您的帮助!

import pandas as pd
import pylab as plt
import seaborn as sns
import numpy as np

d = {'cat' : pd.Series(['catA', 'catA', 'catA', 'catB']),
    'y' : pd.Series([100., 52., 33., 4.]),
    'x': pd.Series([1., 2., 3., 4.]),
    'markersize' : pd.Series([50., 400., 600., 1600.]) }
df = pd.DataFrame(d)


colorlist = sns.husl_palette(len(df.groupby(df.cat)),l=.3, s=.8)

fig=plt.figure()
ax=fig.gca()
for i, (group, dataframe) in enumerate(df.groupby('cat')):
    ax=dataframe.plot(kind='scatter', x='x', y='y', ax=ax, color=colorlist[i], label=group, s=dataframe.markersize)

scatter

0 个答案:

没有答案