前言
昨天在浏览www.hltv.org网站的csgo选手数据时看到了这样一幅图,图上包含有选手的六项数据,分别为KPR(平均每回合击杀),DPR(平均每回合死亡),KAST(助攻综合百分比),IMPACT(影响力),ADR(平均每回合输出),Rating 2.0(综合得分),从这图上可以看出KPR,DPR,IMPACT和RATING2.0为同一类型的输出(保留两位小数),KAST以百分比输出,ADR的范围在0到100多之间,它们是不同量纲的数据,但是图上却有一条灰色的平均线,同时,数据的大小影响到了该数据条的颜色,这样的图是怎么画出来的呢?能不能用python的Seaborn画出这样的图呢?
流程
作图之前,我们需要先弄清楚,默认的作图和我们想要的作图之间到底存在什么样的不同之处?
看官网示例的作图:
第一,Y轴的额外标签(total_bill)和X轴的额外标签(day)应该去掉。
第二,Y轴的刻度标签应该去掉(0,5,10,15,20)。
第三,每个条形图上方应该存在数据标签而不是黑色竖直误差条。
第四,背景的刻度线应该淡化,Y轴该去掉刻度。
第五,应该存在一条共同的平均线,同时添加上文字标签放置在灰色线条的左侧。
第六,根据数值大小进行颜色变换。
关于第五点,我们可以看出这条共同的平均线其实可以用标准化后的各项数据表示,什么意思呢?进行正态变换,正态化后平均数=0,不就有共同的标准线了吗?同时第六点也有了解决思路,那就是比如高于一个标准差,高于两个标准差,高于三个标准差分别用不同的颜色。
seaborn.barplot(*, x=None, y=None, hue=None, data=None, order=None, hue_order=None,
estimator=<function mean at