2017-01-10 5 views
2

Я пользуюсь функцией скриптинга из библиотеки Seaborn. Иногда внешние линии визуализируются: enter image description hereНаружные линии Морской скрипт/boxplot

, а иногда они не являются: enter image description here

Эти примеры основаны на том же кусочке кода работает разное время:

df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD')) 
    sns.violinplot(data=df, order=list(df.columns), cut=0,inner='points', bw='silverman', split=True, color='limegreen') 
    plt.show() 

Как манипулируют формат внешних линий?

+3

Прочитайте эту тему о Matplotlib ошибка и решения: https: // GitHub .com/mwaskom/seaborn/issues/678 ​​ – Serenity

+0

Спасибо, это выглядит действительно полезно. – Archie

ответ

2

Кредиты до Serenity за то, что это связано с ошибкой matplotlib (см. Это сообщение issue).

Она может быть решена с помощью следующей функции:

def patch_violinplot(): 
    from matplotlib.collections import PolyCollection 
    ax = plt.gca() 
    for art in ax.get_children(): 
      if isinstance(art, PolyCollection): 
       art.set_edgecolor((0.3, 0.3, 0.3)) 

Крепеж пример может быть сделано:

df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD')) 
sns.violinplot(data=df, order=list(df.columns), cut=0,inner='points', bw='silverman', split=True, color='limegreen') 
patch_violinplot() 
plt.show() 
Смежные вопросы