matplotlib 如何创建带有因变量而异的标记的散点图

dffbzjpn  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(162)

我有一个包含许多列的数据集:年龄、收入、品牌、产品、收入、支出等
我想在X轴和Y轴上画出两个变量,年龄和收入,然后我想根据两个变量,品牌和产品,区分标记的选择。
我已经能够做一个散射与不同的颜色为不同的品牌使用lmplpt从seaborn。
目前,我的图表上的所有标记都是圆圈,根据它们代表的品牌不同,圆圈的颜色也不同。例如,品牌A是红色,品牌B是绿色,品牌C是蓝色等等。
有没有办法让记号笔的样式根据产品的不同而不同。例如,产品1用X,产品2用O,产品3用-。
因此,我的散点图将品牌A的产品1显示为红色X,品牌B的产品3显示为绿色-。

import pandas as pd
import seaborn as sns

df = pd.read_csv("data.csv")
sns.lmplot(x='age', y='income', height = 8, aspect = 1, data=df, fit_reg=False, hue='brand', legend = True)
e4yzc0pl

e4yzc0pl1#

根据所有评论,我相信您正在寻找创建:

  • 多个散点图,每个国家一个子图
  • 图应具有形状、颜色和x,y以指示每个点
  • 图例应位于绘图区之外

为此,你需要使用一个图形级别的绘图-relplot(),其中kind="scatter"是默认值。

sns.relplot(data=df, x="age", y="income", hue="brand", style='product', col='country', kind="scatter")

因为我没有你的数据,所以使用了penguins数据集。下面是我的代码和结果图。希望这是你要找的。注意,使用relplot(),图例在外面,所以你不需要使用move_legend()

penguins=sns.load_dataset('penguins')
sns.relplot(data=penguins, x="bill_length_mm", y="bill_depth_mm", hue="species", style='sex', col='island')
    • 情节**

相关问题