【问题标题】:Converting a matplotlib colourmap to a seaborn colour palette将 matplotlib 颜色图转换为 seaborn 调色板
【发布时间】:2019-08-06 10:21:54
【问题描述】:

我已经从我选择的颜色中制作了一个颜色图,但是我想将它转换为一个调色板,可以用来“色调”一个 seaborn 情节。这可能吗?如果可以,怎么可能?

我用过……

cmap = pl.colors.LinearSegmentedColormap.from_list("", ["red","white"],gamma=0.5,N=len(hue))

...为了制作我自己的颜色图,我知道这是可行的,因为它可以成功应用于标准matplotlib.pyplot.scatter plot,如下所示。

plt.scatter(x=[1,2,3,4,5],y=[1,2,3,4,5],c=[5,4,3,2,1],cmap=cmap)

click here to see the output as it won't let me embed an image

但是,我正在尝试使用 seaborn 的 swarmplot 函数并将我的颜色图作为色调参数传递。显然这不起作用,因为这个参数需要一个调色板 - 因此我的问题!

我不太确定从哪里开始!任何帮助将不胜感激!

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    seaborn 调色板是一个简单的颜色列表。您可以通过

    获得颜色
    cmap(np.linspace(0,1,cmap.N))
    

    完整示例:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib.colors as mcolors
    import seaborn as sns
    
    df  =pd.DataFrame({"x" : np.random.randint(0,4, size=200),
                       "y" : np.random.randn(200),
                       "hue" : np.random.randint(0,4, size=200)})
    
    u = np.unique(df["hue"].values)
    cmap = mcolors.LinearSegmentedColormap.from_list("", ["indigo","gold"],gamma=0.5,N=len(u))
    
    sns.swarmplot("x", "y", hue="hue", data=df, palette=cmap(np.linspace(0,1,cmap.N)))
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 2020-03-31
      • 2017-11-04
      • 2020-09-28
      • 2019-02-08
      • 2014-12-05
      相关资源
      最近更新 更多