I have a working script that generates a violin 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)
as can be seen, the y-labels repeat in pairs. I would like the first violin in one color, and the second in another color to make the plot easier to understand.
For example, the colors should be red, green, red, green, red, green, etc. to show that the same pair is repeating.
as the above code shows, I can change the color of all violin plots, but not just for one of each (cf. Changing the color of matplotlib's violin plots)
How can I get matplotlib to set the color of each violin so it looks something like this?