python-如何在m​​atplotlib和seaborn的不同图表中为相同的索引设置相同的颜色

python-如何在m​​atplotlib和seaborn的不同图表中为相同的索引设置相同的颜色,第1张

概述我正在尝试在两个图中绘制一个熊猫数据框.一个带有matplotlib pyplot饼图,另一个带有seaborn barchart.在每个图表上,我都根据不同的列对数据框进行了排序.同样,每个图表代表数据帧排序所依据的各个值.因此,两个图表中的行顺序不同.这样,数据框中相同的索引(或类别)在图表上以不同的颜色显示,这令人困惑.如何解决此问题,以使索引在不同图

我正在尝试在两个图中绘制一个熊猫数据框.一个带有matplotlib pyplot饼图,另一个带有seaborn barchart.在每个图表上,我都根据不同的列对数据框进行了排序.同样,每个图表代表数据帧排序所依据的各个值.因此,两个图表中的行顺序不同.这样,数据框中相同的索引(或类别)在图表上以不同的颜色显示,这令人困惑.如何解决此问题,以使索引在不同图表上具有相同的颜色?

我的代码:

df = pd.DataFrame({"Total":totals,"Infected": infected},index=category).sort_values("Total",ascending=False)fig,ax = plt.subplots(ncols=2,nrows=1,figsize=(20,8))#creating a pIE chart with conditional explode optionthreshold = new_train.shape[0]*thresholdif explode==-1:    ax[0].pIE(df[df["Total"]>threshold]["Total"],labels=df[df["Total"]>threshold].index.values,autopct='%1.1f%%',shadow=False,startangle=rotation,textprops={'Fontsize': 15})else:    ax[0].pIE(df[df["Total"]>threshold]["Total"],textprops={'Fontsize': 15},explode=explode)ax[0].axis('equal')ax[0].set_Title(col_name)#created a sorted bar chartnewdf = df[df["Total"]>threshold]newdf.sort_values("Infected",ascending=False,inplace=True)ax[1].set_xticklabels(category,rotation=45,horizontalalignment='right')ax[1].set_Title('Infected fractions')ax[1] = sns.barplot(x=newdf.index,y="Infected",data=newdf,order=newdf.index)#,orIEnt='h')plt.show()

例如,1.1.15200.1在饼图中具有蓝色,而在条形图中,其颜色是橙色.

最佳答案您将必须制作一个字典,以查找所用标签值的适当颜色.以下是简化版本,希望可以涵盖您对数据所做的所有 *** 作:

# a dataframe from a List of Lists el = [['RED',50,1],['GREEN',30,2],['BLUE',7,3],['YELLOW',3,4],['ORANGE',9,5],['BLACK',1,6]]df = pd.DataFrame(el)# since you are not using the entire dataframedf_thres = df[df[1] > 1]# make a fixed length color map manuallyc = ['red','green','blue','yellow','orange']cList1 = {i:j for i,j in zip(df_thres[0].values,c)}# make an arbitrary-length colormapcm = plt.get_cmap('rainbow')c = [cm(1.0 * i/len(df_thres)) for i in range(len(df_thres))]cList2 = {i:j for i,c)}fig,ax = plt.subplots(nrows=2,ncols=2,figsize=(11,8))# manual colors# PIE PLOT: sort on the third columnnewdf = df_thres.sort_values(2,ascending=False)ax[0,0].pIE(newdf[2],labels=newdf[0],colors=[cList1[i] for i in newdf[0].values])ax[0,0].axis('square') # matplotlib 2.x only# bar PLOT: sort on the second column    newdf = df_thres.sort_values(1,1].bar(newdf[0],newdf[1],color=[cList1[i] for i in newdf[0].values])#----------------# arbitrary-length generated colorListnewdf = df_thres.sort_values(2,ascending=False)ax[1,0].pIE(newdf[1],colors=[cList2[i] for i in newdf[0].values])ax[1,0].axis('square') # matplotlib 2.x onlynewdf = df_thres.sort_values(1,color=[cList2[i] for i in newdf[0].values])

这是我得到的输出.下一行的颜色不是标记的颜色,但它们是一致的. (另外,请注意,我在这里将matplotlib用于两个图)

总结

以上是内存溢出为你收集整理的python-如何在m​​atplotlib和seaborn的不同图表中为相同的索引设置相同的颜色 全部内容,希望文章能够帮你解决python-如何在m​​atplotlib和seaborn的不同图表中为相同的索引设置相同的颜色 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存