加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Seaborn – 根据色调名称更改条形颜色

发布时间:2020-12-20 12:03:12 所属栏目:Python 来源:网络整理
导读:我正在使用seaborn和pandas从不同(但相关)的数据中创建一些条形图.这两个数据集共享一个用作色调的公共类别,因此我想确保在这两个图中该类别的条形颜色匹配.我怎么能这样做? 一个基本的例子如下: import seaborn as snsimport pandas as pdimport matplotl
我正在使用seaborn和pandas从不同(但相关)的数据中创建一些条形图.这两个数据集共享一个用作色调的公共类别,因此我想确保在这两个图中该类别的条形颜色匹配.我怎么能这样做?

一个基本的例子如下:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
sns.set_style('darkgrid')
fig,ax = plt.subplots()

a = pd.DataFrame({'Program': ['A','A','B','Total','Total'],'Scenario': ['X','Y','X','Y'],'Duration': [4,3,5,4,9,7]})

g = sns.barplot(data=a,x='Scenario',y='Duration',hue='Program',ci=None)
plt.tight_layout()
plt.savefig('3 progs.png')

plt.clf()

b = pd.DataFrame({'Program': ['A','C',2,12,9]})

g = sns.barplot(data=b,ci=None)
plt.tight_layout()
plt.savefig('4 progs.png')

制作两张图:

3 category bar plot


4 category bar plot

在这个例子中,我想确保Total类别在两个图形中使用相同的颜色(例如黑色)

解决方法

A.使用颜色列表

确保两个图中相同类别具有相同颜色的最简单解决方案是在创建绘图时手动指定颜色.

# First bar plot
ax = sns.barplot(data=a,ci=None,palette=["C0","C1","k"])

# ...
# Second bar plot
ax2 = sns.barplot(data=b,"C2","k"])

颜色“C2”(颜色循环的第三种颜色)仅存在于存在程序C的第二个图中.

B.使用字典

您也可以使用字典,将色调列中的值映射到颜色,而不是列表.

palette ={"A":"C0","B":"C1","C":"C2","Total":"k"}

ax = sns.barplot(data=a,palette=palette)
# ...
ax2 = sns.barplot(data=b,palette=palette)

在这两种情况下,输出将如下所示:

enter image description here

C.自动字典

最后,您可以根据色调列中的值自动创建此字典.这里的优点是你既不需要知道颜色,也不需要知道各个数据帧之前的值.

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
sns.set_style('darkgrid')
fig,7]})
b = pd.DataFrame({'Program': ['A',9]})

unique = a["Program"].append(b["Program"]).unique()
palette = dict(zip(unique,sns.color_palette()))
palette.update({"Total":"k"})

ax = sns.barplot(data=a,palette=palette)
plt.tight_layout()
plt.figure()

ax2 = sns.barplot(data=b,palette=palette)
plt.tight_layout()
plt.show()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读