2014-06-19 48 views
5

我正在使用matplotlib来制作一个DF的散点图。为了获得每个数据设置不同的颜色,我正在做两个独立的呼叫plt.scatter:有没有办法根据不同列中的离散变量制作matplotlib散点图标记或颜色?

plt.scatter(zzz['HFmV'], zzz['LFmV'], label = dut_groups[0], color = 'r') 
plt.scatter(qqq['HFmV'], qqq['LFmV'], label = dut_groups[1], color = 'b') 
plt.legend() 
plt.show() 

这给了我想要的颜色依赖,但真的会有什么理想的是,如果我可以直接去找熊猫给我散点图与同积几个数据集由像

df.plot(KIND =散射(X,Y,颜色= df.Group,标记= df.Head)

显然有没有这样的动物(至少我能找到)所以,我脑海中最好的事情是将plt.scatter调用放到一个循环中,以便使颜色或标记变化根据其中一行(不是x或y,而是其他行)。如果我想使用的行是一个连续变量,它看起来像我可以使用色彩映射,但在我的情况下,我需要为此起诉的行是一个字符串(变量的分类类型,而不是数字)。

任何帮助非常感谢。

回答

10

你在做什么几乎可以工作,但你必须通过color一个颜色矢量,而不仅仅是一个变量向量。所以,你可以这样做:

color = df.Group.map({dut_groups[0]: "r", dut_groups[1]: "b"}) 
plt.scatter(x, y, color=color) 

也是一样的标记样式

你也可以使用seaborn做色彩映射你希望(如讨论here)的方式,虽然它没有做标记风格映射:

import seaborn as sns 
import pandas as pd 
from numpy.random import randn 

data = pd.DataFrame(dict(x=randn(40), y=randn(40), g=["a", "b"] * 20)) 
sns.lmplot("x", "y", hue="g", data=data, fit_reg=False) 

enter image description here

相关问题