Как изобразить тело скрипичного сюжета поверх прямоугольника пролета? - PullRequest
2 голосов
/ 29 марта 2019

Я хочу сделать скрипичный сюжет поверх цвета фона.Я использую 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 Ответ

2 голосов
/ 29 марта 2019

Этот вопрос похож на Изменение цвета участков скрипки matplotlib , хотя не совсем так. Я не буду повторять то, что Ник Т написал в его ответе (обязательно поблагодарите его также), но просто добавлю, что PolyCollection также имеет set_alpha и set_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

...