繁体   English   中英

如何用不同的 colors 和 matplotlib 得到不同的小提琴?

[英]How to get different violins with different colors with matplotlib?

我有一个生成小提琴 plot 的工作脚本:

import matplotlib.pyplot as plt
data = []
data.append([0.952560240963855,0.957831325301205,0.963855421686747,0.955572289156626])
data.append([0.951807228915663,0.955572289156626,0.955572289156626,0.95933734939759])
data.append([0.559440559440559,0.540983606557377,0.671232876712329,0.542635658914729])
data.append([0.561643835616438,0.520325203252033,0.604026845637584,0.584615384615385])
data.append([0.51219512195122,0.535211267605634,0.328767123287671,0.545454545454545])
data.append([0.5,0.549295774647887,0.383561643835616,0.506493506493506])
data.append([0.0168539325842697,0.0143198090692124,0.0191235059760956,0.0135891286970424])
data.append([0.0184590690208668,0.0159108989657916,0.0247011952191235,0.0119904076738609])
data.append([0.541487450045305,0.527328339941019,0.652109370736233,0.531303388453911])
data.append([0.541172390210179,0.504257856866246,0.580634953286575,0.574899313794581])
data.append([0.655737704918033,0.647058823529412,0.671232876712329,0.673076923076923])
data.append([0.640625,0.615384615384615,0.592105263157895,0.716981132075472])
data.append([0.48780487804878,0.464788732394366,0.671232876712329,0.454545454545455])
data.append([0.5,0.450704225352113,0.616438356164384,0.493506493506494])
data.append([0.98314606741573,0.985680190930788,0.980876494023904,0.986410871302958])
data.append([0.981540930979133,0.984089101034208,0.975298804780876,0.988009592326139])
data.append([0.96837196100693,0.973438883099712,0.978802597827867,0.975474166121648])
data.append([0.966737462318444,0.972587313859289,0.97325765431425,0.972250770811922])
f = plt.figure()
f.set_figwidth(9)
plt.rc('xtick', labelsize = 6)
violin_plot = plt.violinplot(data,
                  showmeans=False, vert = False,
                  showmedians=True)
for pc in violin_plot["bodies"]:
    pc.set_facecolor('red')
    pc.set_edgecolor('black')
plt.xlabel('Metric Value')
plt.ylabel('Metric')
plt.yticks([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18], ["Accuracy","Accuracy","F1","F1","False Negative Rate","False Negative Rate","False Positive Rate","False Positive Rate","MCC","MCC","Precision","Precision","Recall","Recall","Specificity","Specificity","roc_auc","roc_auc"])
plt.savefig('violin.svg', bbox_inches='tight', pad_inches = 0.05)

在此处输入图像描述

可以看出,y 标签成对重复。 我想要一种颜色的第一把小提琴,另一种颜色的第二把小提琴,以使 plot 更容易理解。

比如colors应该是red, green, red, green, red, green等,表示同一对重复。

如上面的代码所示,我可以更改所有小提琴图的颜色,但不仅仅是每个小提琴图的颜色(参见Changing the color of violin plots matplotlib's violin plots

如何让 matplotlib 设置每把小提琴的颜色,使其看起来像这样? 单独设置颜色

您可以通过这种方式编辑您的 for 循环:

for i, pc in enumerate(violin_plot["bodies"], 1):
    if i%2 != 0:
        pc.set_facecolor('red')
    else:
        pc.set_facecolor('green')
    pc.set_edgecolor('black')

通过这种方式,您正在计算聚合集合(从底部开始); 偶数的画成绿色,奇数的画成红色。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM