2015-12-16 2 views
2

seaborn - красивый пакет Python, который по большей части действует как дополнительный слой поверх matplotlib. Тем не менее, это изменяет, например, вещи, которые будут matplotlib методов на объекте сюжета для направления seaborn функций.В Питоне Сиборн, есть ли способ сделать противоположное `despine`?


seaborn «ы despine()удалить любые шипы (наружные кромки участка) от участка. Но я не могу сделать наоборот.

Кажется, я не могу воссоздать позвоночник стандартным способом, который я бы мог, если бы использовал matplotlib с самого начала. Есть ли способ сделать это? Как я могу?


Ниже приведен пример. Могу ли я, например, добавить позвоночник в нижнюю и левую части сюжета?

from sklearn import datasets 
import pandas as pd 

tmp = datasets.load_iris() 
iris = pd.DataFrame(tmp.data, columns=tmp.feature_names) 
iris['species'] = tmp.target_names[tmp.target] 
iris.species = iris.species.astype('category') 

import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set_style('darkgrid') 
sns.boxplot(x='species', y='sepal length (cm)', data=iris_new) 
plt.show() 

associated boxplot

+1

Параметр 'darkgrid' стиль не имеет колючки по умолчанию. Вам нужно выбрать другой стиль - у matplotlib теперь много своих. Вы также можете импортировать сибирский без каких-либо влияний на стиль, выполнив 'import seaborn.apionly as sns' –

+1

Пол прав, хотя полный ответ немного более тонкий. 'despine' фактически удаляет объекты позвоночника, в то время как стиль' darkgrid' устанавливает 'axes.linewidth' (aka spines) в 0. Вы можете указать дополнительные параметры rc поверх стандартного' darkgrid' или выбрать другой стиль , – mwaskom

+0

@mwaskom спасибо за разъяснение. очень хорошо знать. –

ответ

4

Спасибо за все большие комментарии! Я знал, что некоторые из того, что вы написали, но не то, что как'axes.linewidth'и'axes.edgecolor' необходимо установить.

Здесь я пишу ответ, так как это компиляция нескольких комментариев.


То есть, следующий код генерирует график ниже:

sns.set_style('darkgrid', {'axes.linewidth': 2, 'axes.edgecolor':'black'}) 
sns.boxplot(x='species', y='sepal length (cm)', data=iris_new) 
plt.show() 

enter image description here

+1

Кстати, будет немного лучше, если вы используете темно-серый (т. Е. '. .15" '), а не" черный ". Это и правда [в целом] (http://ianstormtaylor.com/design-tip-never-use-black/), и особенно потому, что это цвет других элементов сюжета. – mwaskom

+0

Спасибо, @mwaskom! Согласен. Однако, для моего примера, я хотел сделать код максимально простым, не вводя понятия вне моего основного вопроса. –

Смежные вопросы