一、seaborn庫是幹啥用的?
畫圖
Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn就能做出很具有吸引力的圖,而使用matplotlib就能製作具有更多特色的圖。應該把Seaborn視爲matplotlib的補充,而不是替代物。
自己用seaborn也用得不深,這裏就把常用的總結一下,權當方便自己以後複習。
二、畫板主題設置
- 畫板有5種主題設置:darkgrid、whitegrid、dark、white、ticks
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
#生成一些測試數據
#不用sns的默認主題,需要自己進行設置
data1 = np.random.randint(1,10,100)
#fig = plt.figure(figsize=(9,6))
plt.hist(data1)
未設置畫板時,默認是這個樣子
#用sns.set()是默認主題darkgrid
sns.set()
plt.hist(data1)
sns.set_style('darkgrid')
plt.hist(data1)
sns.set_style('whitegrid')
plt.hist(data1)
sns.set_style('white')
plt.hist(data1)
sns.set_style('dark')
plt.hist(data1)
#與white主題的區別是,多了刻度符
sns.set_style('ticks')
plt.hist(data1)
2、設置圖表的4種格式:paper、talk、poster、notebook
注意觀察圖形和座標軸的變化
data_x = np.linspace(0,2*np.pi,100)
data_y = np.sin(data_x)
sns.set_context("paper")
plt.plot(data_x,data_y)
sns.set_context('talk')
plt.plot(data_x,data_y)
sns.set_context("poster")
plt.plot(data_x,data_y)
#font_scale是設置座標軸字體的大小,"lines.linewidth"是線型的大小
sns.set_context("notebook", font_scale=3.5, rc={"lines.linewidth": 4.5})
plt.plot(data_x,data_y)
三、調色選擇
顏色選擇上,我是從使用的角度出發總結記憶的,色彩上,咱們常用的無非三種類型:
1、分類色(需要若干個色彩來代表不同主題,如表示五個省份近幾年的GDP變化情況,這時選擇的色彩就是分類色)
2、對比色(需要在對象之間做明顯比照,如果只有一組對象,直接用分類色就OK了,如果有多組對象,最好是同組對象是同一個色調不同飽和度,如深藍和淺藍)
3、漸變色(需要表現一個主題在不同階段的變化)
1、分類色
分類色選擇一般用2種方法,一種是使用color_palette("hls", n)函數,使用hls顏色空間,選擇你需要的n中顏色即可;一種是用hls_palette(n, l=0.5, s=0.5)函數,選擇你需要的顏色數量n,再自定義l(lightness 亮度和situation飽和度)
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.palplot(sns.color_palette("hls", 8))
sns.palplot(sns.hls_palette(10, l=.7, s=.9))
#使用例子
data_x = np.arange(1,11,1)
data_y = np.random.randint(1,10,10)
pal = sns.color_palette("hls", 10)
sns.barplot(data_x,data_y,palette=pal)
2、對比色
只有2個對象的對比色不用講了,直接用上面的分類色就行,如果有多組對象,每組有2個對象的,用函數color_palette("Paired",n)定義,n表示n個顏色。
這裏有一個疑問沒解決,如果有多組,一組有3個或3個以上對象,顏色對比就不會搞了,有會弄的大俠留言指教一下哩。
sns.palplot(sns.color_palette("Paired",8))
a = np.arange(1,9,1)
b = np.random.randint(1,10,8)
#print(b)
sns.barplot(a,b,palette=sns.color_palette("Paired", 8))
3、漸變色
設置漸變色可以用四個函數實現:color_palette("顏色名",n)、cubehelix_palette(n, start=0.5, rot=-0.75)、light_palette("顏色名")、dark_palette("顏色名")
sns.palplot(sns.color_palette("Reds",10))
sns.palplot(sns.color_palette("Blues_r",10))
sns.palplot(sns.cubehelix_palette(8, start=.3, rot=-.15))
sns.palplot(sns.light_palette("green",8))
sns.palplot(sns.dark_palette("purple",8))