половина (не расколотый!) скрипичных участков в морском заливе - PullRequest
0 голосов
/ 20 декабря 2018

В настоящее время Seaborn предлагает функциональность для разделения скрипичных участков , установив split=True в соответствии с переменной hue.Я хотел бы сделать «половинный» сюжет скрипки, то есть сюжет, где половина каждой скрипки опущена.На таком графике изображено что-то похожее на pdf для каждой непрерывной переменной, нанесенное только на одной стороне каждой вертикальной линии каждой категориальной переменной.

Мне удалось обмануть seaborn, чтобы построить это с помощью дополнительной точки данных за пределами нанесенного диапазона значений и дополнительного фиктивного оттенка, но я хотел бы знать, можно ли это сделать без фактического изменения набора данныхнапример, в пределах sns.violinplot() аргументов.

Например, этот график:

enter image description here

Был создан из этого фрагмента:

# imports
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# load dataset from seaborn
datalist = sns.get_dataset_names()
dataset_name = 'iris'
if dataset_name in datalist:
    df = sns.load_dataset(dataset_name)
else:
    print("Dataset with name: " + dataset_name + " was not found in the available datasets online by seaborn.")

# prepare data
df2 = df.append([-999,-999,-999,-999,'setosa'])
df2['huecol'] = 0.0
df2['huecol'].iloc[-1]= -999

# plot
fig = plt.figure(figsize=(6,6))
sns.violinplot(x='species',y="sepal_width",
            split=True, hue ='huecol', inner = 'quartile',
            palette="pastel", data=df2, legend=False)
plt.title('iris')

# remove hue legend
leg = plt.gca().legend()
leg.remove()
plt.ylim([1,5.0])
plt.show()

1 Ответ

0 голосов
/ 05 июля 2019

Ответ прост: нет, с seaborn невозможно, не обманывая его, думать, что hue присутствует.

В этом ответе показано, как это сделать в matplotlib, и, в принципе, то же самое можно применить и к морским скрипкам, а именно к вырезанию половины пути для скрипки.

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