2015-12-16 41 views
2

seaborn是一個美麗的Python包,大部分作爲matplotlib之上的附加層。但是,它會改變,例如,將對圖表對象上的matplotlib方法指示seaborn函數。在Python的Seaborn中,有沒有什麼辦法可以做「despine」的反義詞?


seaborndespine()從曲線圖中刪除任何棘(圖的外邊緣)。但我不能做相反的事情。

我似乎無法以標準的方式重新創建脊柱,如果我從一開始就完全使用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現在有許多自己的風格。你也可以通過導入seaborn.apionly作爲sns來導入seaborn而不會對樣式產生任何影響。 –

+1

Paul是正確的,儘管完整的答案有點微妙。 'despine'實際上刪除了脊柱物體,而'darkgrid'風格將'axes.linewidth'(又名棘)設置爲0.你可以在默認的'darkgrid'之上指定額外的rc參數,或者選擇不同的樣式。 – 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」')而不是「黑色」,那麼BTW的東西看起來會更好一些。這是真的[一般](http://ianstormtaylor.com/design-tip-never-use-black/),特別是因爲那是其他seaborn劇情元素的顏色。 – mwaskom

+0

謝謝,@mwaskom!我同意。然而,就我的例子而言,我希望儘可能簡化代碼,而不是在我的主要問題之外引入概念。 –

相關問題