Есть ли какой-нибудь способ получить только мини боксплот из скрипичного участка морского волка? - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь нарисовать очень длинную серию коробочных сюжетов.Мне нравится эстетика миниатюрных боксов, нарисованных внутри violinplot (управляется с помощью параметра "inner" для seaborn.violinplot).Кто-нибудь знает простой способ нарисовать только этот мини-бокс-бокс без остальной части скрипки?Спасибо!

seaborn violin plots

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Скрипки - это PolyCollection объекты.Вы можете удалить все PolyCollection с осей.Это имело бы смысл, если бы оси содержали только графики для скрипки, а не какие-либо другие PolyCollection с.

import matplotlib.pyplot as plt
import seaborn as sns

sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.violinplot(x="day", y="total_bill", data=tips)


from matplotlib.collections import PolyCollection
for a in ax.findobj(PolyCollection):
    a.remove()

ax.relim()
ax.autoscale_view()

plt.show()

enter image description here

Или даже проще

for a in ax.collections:
    a.remove()
0 голосов
/ 24 октября 2018

Мне удалось создать подкласс скрипки, который делает то, что я хочу.По сути, я просто скопировал код, который рисует вуаля, и удалил ненужные мне части.Это, конечно, немного некрасиво, но оно сделало свою работу.Если кто-то еще придумает более элегантное решение, пожалуйста, оставьте свой ответ.

Мое решение вы можете найти по адресу: https://gist.github.com/mdbecker/c21e6a8a6ce893b61eecd880d9f18a83

, которое дает такие результаты, как:

miniboxplot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...