Python 如何手动为分类变量的类型指定颜色?
我在下面的代码中创建了两个绘图。我在Python 如何手动为分类变量的类型指定颜色?,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我在下面的代码中创建了两个绘图。我在JobDomain列中有如下类别值 第一类 第二类 第三类 下面的代码为上述类别生成两个不同颜色的绘图。我需要保持这两个情节有相同的颜色为这3个类别 colors = ["#F28E2B", "#4E79A7","#79706E"] edu = (df.groupby(['JobDomain'])['sal'] .value_counts(normalize=True)
JobDomain
列中有如下类别值
- 第一类
- 第二类
- 第三类
colors = ["#F28E2B", "#4E79A7","#79706E"]
edu = (df.groupby(['JobDomain'])['sal']
.value_counts(normalize=True)
.rename('Percentage')
.mul(100)
.reset_index()
.sort_values('sal'))
coding = (df.groupby(['JobDomain'])['sal2']
.value_counts(normalize=True)
.rename('Percentage')
.mul(100)
.reset_index()
.sort_values('sal2'))
fig, axs = plt.subplots(ncols=2,figsize=(20, 6),sharey=True)
plt.subplots_adjust(wspace=0.4)
p=sns.barplot(x="sal",y="Percentage",hue="JobDomain",data=edu,
ax=axs[0],palette=sns.color_palette(colors))
q=sns.barplot(x="sal2",y="Percentage",hue="JobDomain",data=coding,
ax=axs[1],palette=sns.color_palette(colors))
通过创建一个字典,将每个cathegory映射到一种颜色(并将其传递到
调色板
,而不调用sns.color\u调色板
)。例如:
导入seaborn作为sns
从导入数据帧
从matplotlib导入pyplot作为plt
df=数据帧({'JobDomain':['Cat1','Cat2','Cat3','Cat1','Cat3'],
"sal":[110,90,100,200,130],,
“sal2”:[100280320240440]
})
颜色={'Cat1':“#F28E2B”、'Cat2':“#4E79A7”、'Cat3':“#79706E”}
edu=(df.groupby(['JobDomain'])['sal']
.value\u计数(标准化=真)
.rename('百分比')
穆尔先生(100)
.reset_index()
.sort_值('sal'))
编码=(df.groupby(['JobDomain'])['sal2']
.value\u计数(标准化=真)
.rename('百分比')
穆尔先生(100)
.reset_index()
.sort_值('sal2'))
图,axs=plt.子批次(ncols=2,figsize=(20,6),sharey=True)
plt.子批次调整(wspace=0.4)
p=sns.barplot(x=“sal”,y=“Percentage”,hue=“JobDomain”,data=edu,ax=axs[0],palete=colors)
q=sns.barplot(x=“sal2”,y=“百分比”,hue=“JobDomain”,数据=编码,ax=axs[1],调色板=颜色)
h、 l=p.获取\u图例\u句柄\u标签()
l、 h=zip(*已排序(zip(l,h)))
p、 图例(h、l、title=“工作域”)
q、 图例(h、l、title=“工作域”)
plt.show()
PS:要再次对图例排序,请在plt.show()之前插入:
h,l=p.获取\u图例\u句柄\u标签()
l、 h=zip(*已排序(zip(l,h)))
p、 图例(h、l、title=“工作域”)
q、 图例(h、l、title=“工作域”)
创建一个字典,将每个cathegory映射到一种颜色(并将其传递到调色板
,而不调用sns.color\u调色板
)。例如:
导入seaborn作为sns
从导入数据帧
从matplotlib导入pyplot作为plt
df=数据帧({'JobDomain':['Cat1','Cat2','Cat3','Cat1','Cat3'],
"sal":[110,90,100,200,130],,
“sal2”:[100280320240440]
})
颜色={'Cat1':“#F28E2B”、'Cat2':“#4E79A7”、'Cat3':“#79706E”}
edu=(df.groupby(['JobDomain'])['sal']
.value\u计数(标准化=真)
.rename('百分比')
穆尔先生(100)
.reset_index()
.sort_值('sal'))
编码=(df.groupby(['JobDomain'])['sal2']
.value\u计数(标准化=真)
.rename('百分比')
穆尔先生(100)
.reset_index()
.sort_值('sal2'))
图,axs=plt.子批次(ncols=2,figsize=(20,6),sharey=True)
plt.子批次调整(wspace=0.4)
p=sns.barplot(x=“sal”,y=“Percentage”,hue=“JobDomain”,data=edu,ax=axs[0],palete=colors)
q=sns.barplot(x=“sal2”,y=“百分比”,hue=“JobDomain”,数据=编码,ax=axs[1],调色板=颜色)
h、 l=p.获取\u图例\u句柄\u标签()
l、 h=zip(*已排序(zip(l,h)))
p、 图例(h、l、title=“工作域”)
q、 图例(h、l、title=“工作域”)
plt.show()
PS:要再次对图例排序,请在plt.show()之前插入:
h,l=p.获取\u图例\u句柄\u标签()
l、 h=zip(*已排序(zip(l,h)))
p、 图例(h、l、title=“工作域”)
q、 图例(h、l、title=“工作域”)
也许您可以省略.sort\u值('sal')
和.sort\u值('sal2')
?这样,jobdomains在两个图中的顺序就相同了。也许您可以省略。sort\u values('sal')
和。sort\u values('sal2')
?这样,jobdomains在两个图中的顺序将相同。谢谢:)。。。还有一个问题,我们如何对颜色图例进行排序,以便按顺序显示Cat1、Cat2和Cat3?可能只需省略。排序值('sal2')
?包含一些操纵legendyes的技巧,但它也会更改绘图中的条形图位置。是否有任何选项仅在“颜色军团”框中进行手动更改?谢谢。我查一下这篇文章。谢谢:)。。。还有一个问题,我们如何对颜色图例进行排序,以便按顺序显示Cat1、Cat2和Cat3?可能只需省略。排序值('sal2')
?包含一些操纵legendyes的技巧,但它也会更改绘图中的条形图位置。是否有任何选项仅在“颜色军团”框中进行手动更改?谢谢。我查一下这篇文章。