如何根据调色板设置y标签的颜色

问题描述 投票:1回答:2

我使用以下代码生成seaborn散点图:

import pandas as pd
from  matplotlib import pyplot
import seaborn as sns
%matplotlib inline

df = pd.DataFrame({
    'Year': [2010, 2011, 2010, 2011, 2012],
    'Event': ['A', 'A', 'B', 'B', 'B']
})

fig, ax = pyplot.subplots()
sns.stripplot(x="Year", y="Event", ax=ax, data=df,
              palette=sns.color_palette("deep", 50));

生成的图像是:

scatterplot

然而,当可能的标签的数量增加时(例如:'事件'= ['A','B',......'Z'],难以读取对应于每个圆的y标签。

如何在调色板中编写涂有相应颜色的每个y标签(例如:Event)?

通常,在此示例中,我希望A y标签以蓝色书写,B以绿色书写

python pandas matplotlib seaborn
2个回答
1
投票
  1. 为每个标签创建一个包含颜色的字典: dict_colors = {"A":"blue", "B":"green"}
  2. 将它映射到刻度标签上: qazxsw poi

0
投票

对于记录,这里是新代码感谢[label.set_color( dict_colors[label.get_text()] ) for label in ax.get_yticklabels()] 的答案

jrjc

新生成的图像是:

import pandas from matplotlib import pyplot import seaborn as sns %matplotlib inline df = pandas.DataFrame({ 'Year': [2010, 2011, 2010, 2011, 2012], 'Event': ['A', 'A', 'B', 'B', 'B'] }) fig, ax = pyplot.subplots() pal = sns.color_palette("deep", 50) sns.stripplot(x="Year", y="Event", ax=ax, data=df, palette=pal); [label.set_color(pal[i]) for i, label in enumerate(ax.get_yticklabels())]

© www.soinside.com 2019 - 2024. All rights reserved.