做者:xiaoyu
微信公衆號:Python數據科學
知乎:python數據分析師python
最近在作幾個項目的數據分析,每次用到seaborn
進行可視化繪圖的時候老是忘記具體操做。雖然seaborn
的官方網站已經詳細的介紹了使用方法,可是畢竟是英文,並且查找不是很方便。所以博主想從零開始將seaborn
學習一遍,作一個總結,也但願供你們使用參考。
seaborn
同matplotlib
同樣,也是Python進行數據可視化分析的重要第三方包。但seaborn
是在 matplotlib
的基礎上進行了更高級的API封裝,使得做圖更加容易,圖形更加漂亮。微信
博主並不認爲seaborn
能夠替代matplotlib
。雖然seaborn
能夠知足大部分狀況下的數據分析需求,可是針對一些特殊狀況,仍是須要用到matplotlib
的。換句話說,matplotlib
更加靈活,可定製化,而seaborn
像是更高級的封裝,使用方便快捷。dom
應該把seaborn
視爲matplotlib
的補充,而不是替代物。post
seaborn
的學習內容主要包含如下幾個部分:學習
風格管理字體
繪圖方法網站
結構網格人工智能
本次將主要介紹風格管理的使用。spa
除了各類繪圖方式外,圖形的美觀程度多是咱們最關心的了。將它放到第一部分,由於風格設置是一些通用性的操做,對於各類繪圖方法都適用。3d
讓咱們先看一個例子。
%matplotlib inline import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns np.random.seed(sum(map(ord, "aesthetics")))
咱們定義了一個簡單的方程來繪製一些偏置的正弦波,用來幫助咱們查看不一樣的圖畫風格是什麼樣子的。
def sinplot(flip=1): x = np.linspace(0, 14, 100) for i in range(1, 7): plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
matplotlib
默認參數下繪製結果是這樣的:
sinplot()
轉換爲seaborn
默認繪圖,能夠簡單的用set()
方法。
sns.set() sinplot()
Seaborn
將 matplotlib
的參數劃分爲兩個獨立的組合。第一組是設置繪圖的外觀風格的,第二組主要將繪圖的各類元素按比例縮放的,以致能夠嵌入到不一樣的背景環境中。
操控這些參數的接口主要有兩對方法:
axes_style()
, set_style()
plotting_context()
, set_context()
每對方法中的第一個方法(axes_style()
, plotting_context()
)會返回一組字典參數,而第二個方法(set_style()
, set_context()
)會設置matplotlib的默認參數。
有五種seaborn
的風格,它們分別是:darkgrid, whitegrid, dark, white, ticks。它們各自適合不一樣的應用和我的喜愛。默認的主題是darkgrid。
sns.set_style("whitegrid") data = np.random.normal(size=(20, 6)) + np.arange(6) / 2 sns.boxplot(data=data);
sns.set_style("dark") sinplot()
sns.set_style("white") sinplot()
sns.set_style("ticks") sinplot()
white 和 ticks兩個風格都可以移除頂部和右側的沒必要要的軸脊柱。經過matplotlib
參數是作不到這一點的,可是你能夠使用seaborn
的despine()
方法來移除它們:
sinplot() sns.despine()
一些繪圖也能夠針對數據將軸脊柱進行偏置,固然也是經過調用despine()
方法來完成。而當刻度沒有徹底覆蓋整個軸的範圍時,trim
參數能夠用來限制已有脊柱的範圍。
f, ax = plt.subplots() sns.violinplot(data=data) sns.despine(offset=10, trim=True);
你也能夠經過despine()
控制哪一個脊柱將被移除。
sns.set_style("whitegrid") sns.boxplot(data=data, palette="deep") sns.despine(left=True)
雖然來回切換風格很容易,可是你也能夠在一個with
語句中使用axes_style()
方法來臨時的設置繪圖參數。這也容許你用不一樣風格的軸來繪圖:
with sns.axes_style("darkgrid"): plt.subplot(211) sinplot() plt.subplot(212) sinplot(-1)
若是你想定製化seaborn
風格,你能夠將一個字典參數傳遞給axes_style()
和set_style()
的參數rc
。並且你只能經過這個方法來覆蓋風格定義中的部分參數。
若是你想要看看這些參數都是些什麼,能夠調用這個方法,且無參數,這將會返回下面的設置:
sns.axes_style() {'axes.axisbelow': True, 'axes.edgecolor': '.8', 'axes.facecolor': 'white', 'axes.grid': True, 'axes.labelcolor': '.15', 'axes.linewidth': 1.0, 'figure.facecolor': 'white', 'font.family': [u'sans-serif'], 'font.sans-serif': [u'Arial', u'DejaVu Sans', u'Liberation Sans', u'Bitstream Vera Sans', u'sans-serif'], 'grid.color': '.8', 'grid.linestyle': u'-', 'image.cmap': u'rocket', 'legend.frameon': False, 'legend.numpoints': 1, 'legend.scatterpoints': 1, 'lines.solid_capstyle': u'round', 'text.color': '.15', 'xtick.color': '.15', 'xtick.direction': u'out', 'xtick.major.size': 0.0, 'xtick.minor.size': 0.0, 'ytick.color': '.15', 'ytick.direction': u'out', 'ytick.major.size': 0.0, 'ytick.minor.size': 0.0}
而後,你能夠設置這些參數的不一樣版本了。
sns.set_style("darkgrid", {"axes.facecolor": ".9"}) sinplot()
有一套的參數能夠控制繪圖元素的比例。
首先,讓咱們經過set()
重置默認的參數:
sns.set()
有四個預置的環境,按大小從小到大排列分別爲:paper, notebook, talk, poster。其中,notebook是默認的。
sns.set_context("paper") sinplot()
sns.set_context("talk") sinplot()
sns.set_context("poster") sinplot()
你能夠經過使用這些名字中的一個調用set_context()
來設置參數,而且你能夠經過提供一個字典參數值來覆蓋參數。當改變環境時,你也能夠獨立的去縮放字體元素的大小。
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5}) sinplot()
一樣的,你能夠經過嵌入with
語句臨時的控制繪圖的比例。
介紹了Seaborn的5中繪圖風格
下一節將會介紹顏色風格的使用。
關注微信公衆號Python數據科學,獲取 120G
人工智能 學習資料。