以下面的代码为例,如何在下面的图2中保留您在图1中看到的列- colored颜色 关联?

有没有一种方法可以指示sns在特定的点跳过一个色调?我正在寻找一个简单的解决办法,我可以很好地控制,理想情况下无需手动分配十六进制代码.

需要说明的是,在第二张图中,我希望'C'显示为绿色,'E'显示为紫色.

感谢您的任何建议,谢谢.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

np.random.seed(42)

df_1 = pd.DataFrame(np.random.rand(5, 5), columns=['A', 'B', 'C', 'D', 'E'])

df_2 = df_1.drop(['B', 'D'], axis=1)

-1号地块-

sns.boxplot(data=df_1,
            orient="h")
plt.show()

enter image description here

2号地块.

sns.boxplot(data=df_2,
            orient="h")
plt.show()

enter image description here

推荐答案

把字典递给boxplot岁的S palette:

# all unique keys
keys = df_1.columns.union(df_2.columns).unique()
# or for more dataframes:
# set().union(*(df.columns for df in [df_1, df_2, df_3, df_4]))
# ['A', 'B', 'C', 'D', 'E']

# create key: color dictionary
colors = dict(zip(keys, sns.color_palette('Set1')))

# plot 1
sns.boxplot(data=df_1, orient='h', palette=colors)
# plot 2
sns.boxplot(data=df_2, orient='h', palette=colors)

一百零二

如果您使用海运的调色板,请记住,有些 colored颜色 的数量是有限的.要循环通过它们,请使用以下命令:

import itertools

colors = dict(zip(keys, itertools.cycle(sns.color_palette('Set1'))))

输出:

enter image description here

enter image description here

sns.palplot(colors.values())

enter image description here

Python相关问答推荐

是pandas.DataFrame使用方法查询后仍然排序吗?

用gekko解决的ADE方程系统突然不再工作,错误消息异常:@错误:模型文件未找到.& &

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

将特定列信息移动到当前行下的新行

try 在树叶 map 上应用覆盖磁贴

难以在Manim中正确定位对象

为什么符号没有按顺序添加?

如何获取TFIDF Transformer中的值?

为什么默认情况下所有Python类都是可调用的?

如何获取numpy数组的特定索引值?

在单个对象中解析多个Python数据帧

Python中的变量每次增加超过1

如何在FastAPI中为我上传的json文件提供索引ID?

如何获取Python synsets列表的第一个内容?

用SymPy在Python中求解指数函数

mdates定位器在图表中显示不存在的时间间隔

如何从比较函数生成ngroup?

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

如何设置nan值为numpy数组多条件

为什么在Python中00是一个有效的整数?