如何在跨度矩形上方绘制小提琴图的主体?

时间:2019-03-29 09:09:35

标签: python matplotlib violin-plot

我想在背景色之上绘制小提琴图。我使用axvspan创建背景。我的问题是:我找不到使小提琴图的主体(小提琴形状)出现在背景色上方的方法。它仅通过背景的透明性可见。由于小提琴图无法识别zorder命令,是否有办法将小提琴图放在所有内容之上?

例如:

import numpy as np
import matplotlib.pyplot as plt

plt.figure()
plt.axvspan(-5,0,color='r' ,alpha =0.5)
plt.axvspan(0,5,color='g' ,alpha =0.5)
plt.violinplot(np.random.normal(0,1,100), vert = False)

enter image description here

可以看到小提琴形状的蓝色出现在背景颜色(红色和绿色)的透明度中。我希望密度形状的蓝色位于一切之上。

1 个答案:

答案 0 :(得分:2)

此问题与Changing the color of matplotlib's violin plots类似,尽管不完全相同。我不会重复Nick T在his answer中写的内容(也要感谢他),但要补充一点,PolyCollection也有set_alphaset_zorder方法,您可以这样使用:

plt.figure()
plt.axvspan(-5, 0, color='r', alpha=0.5, zorder=1)
plt.axvspan(0, 5, color='g', alpha=0.5, zorder=1)
parts = plt.violinplot(np.random.normal(0, 1, 100), vert=False)
parts['bodies'][0].set_alpha(0.8)
parts['bodies'][0].set_zorder(2)

礼物:

enter image description here