【问题标题】:Different markers for each hue in lmplot seabornlmplot seaborn中每种色调的不同标记
【发布时间】:2017-11-21 15:55:49
【问题描述】:

您如何设置您的 lmplot 以使每个变量不仅具有不同的色调,而且还具有不同的标记?

例如,您将如何根据这些点所属的“类别”获得不同的标记?

import pandas as pd
import seaborn as sns
dic={"A":[4,6,5], "B":[2,7,5], "category":['A','A',"B"]}
df=pd.DataFrame(dic)
sns.lmplot('A', 'B', data=df, hue='category', fit_reg=False)]

我一直在尝试传入一个list iter,比如:

marker_cycle=['o', 'x', '^']
[next(marker_cycle) for i in df["category"].unique()

但还没有成功。

【问题讨论】:

    标签: pandas matplotlib seaborn


    【解决方案1】:

    sns.lmplot里面有markers

    sns.lmplot('A', 'B', data=df, hue='category', fit_reg=False,markers=['o', 'x'])
    

    【讨论】:

      【解决方案2】:

      this issuenext() 需要使用迭代器。您可以使用intertools 创建一个,

      import itertools
      mks = itertools.cycle(['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V'])
      markers = [next(mks) for i in df["category"].unique()]
      

      例子:

      import pandas as pd
      import seaborn as sns
      import matplotlib.pyplot as plt
      
      dic={"A":[4,6,5], "B":[2,7,5], "category":['A','A',"B"]}
      df=pd.DataFrame(dic)
      
      import itertools
      mks = itertools.cycle(['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V'])
      markers = [next(mks) for i in df["category"].unique()]
      
      sns.lmplot('A', 'B', data=df, hue='category', markers=markers, fit_reg=False)
      
      plt.show()
      

      请注意,这可能有点矫枉过正,您可以直接从列表中获取标记,

      marker = ['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V']
      markers = [marker[i] for i in range(len(df["category"].unique()))]
      

      完整示例:

      import pandas as pd
      import seaborn as sns
      import matplotlib.pyplot as plt
      
      dic={"A":[4,6,5], "B":[2,7,5], "category":['A','A',"B"]}
      df=pd.DataFrame(dic)
      
      marker = ['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V']
      markers = [marker[i] for i in range(len(df["category"].unique()))]
      
      sns.lmplot('A', 'B', data=df, hue='category', markers=markers, fit_reg=False)
      
      plt.show()
      

      上述两种解决方案的结果相同:

      【讨论】:

        【解决方案3】:

        也许添加 style='category'

        sns.lmplot('A', 'B', data=df, hue='category', style='category', fit_reg=False)]
        

        【讨论】:

        • lmplot() 目前没有style 参数
        • @IanThompson 这可能是真的,但添加样式参数对我来说是一个海生散点图的诀窍。
        猜你喜欢
        • 2016-04-20
        • 2021-02-09
        • 1970-01-01
        • 1970-01-01
        • 2018-12-25
        • 2019-05-07
        • 2020-11-09
        • 1970-01-01
        • 2018-02-28
        相关资源
        最近更新 更多