【问题标题】:Change colors in scatterplot by category按类别更改散点图中的颜色
【发布时间】:2020-08-16 03:19:27
【问题描述】:

我想知道如何在 python 代码中手动更改类别的颜色,而不是使用 cmap?

我想要的颜色是以下十六进制颜色代码:

蓝色:#1f77b4

橙色:#ff7f0e

绿色:#2ca02c

红色:#d62728

d = """category1,05-01-2020
category1,02-02-2020
category3,06-03-2020
category2,12-04-2020
category4,07-05-2020

"""
df = pd.read_csv(StringIO(d), sep=',', parse_dates=[1], header=None, names=['category','date'])


fig, ax = plt.subplots()
ax.scatter(df['date'],df['category'], marker='s', c=df['category'].astype('category').cat.codes, cmap='tab10')

感谢您的帮助!

【问题讨论】:

    标签: python colors scatter-plot


    【解决方案1】:

    感谢您提供示例数据!
    Seaborn 具有 huepalette 关键字参数,使这变得非常简单。

    import seaborn as sns
    
    df = df.sort_values('category')
    sns.scatterplot('date','category',marker='s',data=df,
                    hue='category',palette=['#1f77b4','#ff7f0e','#2ca02c','#d62728'])
    plt.gcf().autofmt_xdate()
    plt.show()
    

    结果:


    如果你想继续使用原版 Matplotlib,你可以这样做:

    from matplotlib.colors import LinearSegmentedColormap
    
    cmap = LinearSegmentedColormap.from_list('custom_colors',
                                             ['#1f77b4','#ff7f0e','#2ca02c','#d62728'])
    
    fig, ax = plt.subplots() 
    ax.scatter(df['date'],df['category'], marker='s', 
               c=df['category'].astype('category').cat.codes, cmap=cmap)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多