python中的散点图,根据不同的分类变量生成颜色和形状

python中的散点图,根据不同的分类变量生成颜色和形状,python,seaborn,scatter,Python,Seaborn,Scatter,我需要生成散点图,其中多个分类变量可以由散点的颜色和形状表示。比如说, df = pd.DataFrame({'animals':pd.Series(['tiger','cheetah','lion','giraffe','elephant','gorilla']), 'weight': pd.Series([200,120,240,240,400,300]), 'meal': pd.Series([20,10,40,15,40,30]

我需要生成散点图,其中多个分类变量可以由散点的颜色和形状表示。比如说,

df = pd.DataFrame({'animals':pd.Series(['tiger','cheetah','lion','giraffe','elephant','gorilla']),
               'weight': pd.Series([200,120,240,240,400,300]),
               'meal': pd.Series([20,10,40,15,40,30]),
               'region': pd.Categorical(["Asian","American","African","African",'Asian','American']),
              'gender': pd.Categorical(["female","female","male","female",'male','male']),
              'group': pd.Series([True, False, False, True, True, True])})

sns.lmplot(data = df, x = 'weight', y = 'meal', hue = 'region', palette = 'Dark2',
       fit_reg = False, scatter_kws={"s": 20}, size = 4)
这将创建一个绘图,其中区域由不同的颜色表示。 但我也需要用不同的形状来表现性别。因此,颜色显示区域,形状显示性别。 有没有办法做到这一点?谢谢你的建议


您只需将通话中的标记列表传递给:

其中:


您只需将通话中的标记列表传递给:

其中:


你抓住我了。:)我会删除+汉克斯·戴维格和斯科特。这样,相同的变量由颜色和形状表示。有没有一种方法可以用颜色表示一个变量(如区域)和形状表示另一个变量(如性别)?谢谢@berry14,你的问题解决了吗?你可以和我分享剧本吗我会删除+汉克斯·戴维格和斯科特。这样,相同的变量由颜色和形状表示。有没有一种方法可以用颜色表示一个变量(如区域)和形状表示另一个变量(如性别)?谢谢@berry14,你的问题解决了吗?请分享一下剧本好吗?
import seaborn as sns

df = pd.DataFrame({'animals':pd.Series(['tiger','cheetah','lion','giraffe','elephant','gorilla']),
               'weight': pd.Series([200,120,240,240,400,300]),
               'meal': pd.Series([20,10,40,15,40,30]),
               'region': pd.Categorical(["Asian","American","African","African",'Asian','American']),
              'gender': pd.Categorical(["female","female","male","female",'male','male']),
              'group': pd.Series([True, False, False, True, True, True])})

sns.lmplot(data = df, x = 'weight', y = 'meal', hue = 'region', palette = 'Dark2',
       fit_reg = False, scatter_kws={"s": 20}, size = 4, markers=["o","+","x"])

plt.show()