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') 制作两张图: 在这个例子中,我想确保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) 在这两种情况下,输出将如下所示: 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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |