1. 程式人生 > >Python資料科學入門(seaborn)筆記05

Python資料科學入門(seaborn)筆記05

Python資料科學入門筆記05——seaborn

seaborn 是matplotlib的擴充套件

一、seaborn 實現直方圖和密度圖

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame

import seaborn as sns
s1 = Series(np.random.randn(1000))
# distplot() 可以同時繪製多個圖,圖名稱=True
# 預設繪製hist和kde  rug 顯示分佈密集度  更多引數看文件
sns.distplot(s1,hist=False,kde=True,rug=True)

圖一

# 密度圖 
# shade 是否填充
# kdeplot() /  rugplot() 等
sns.kdeplot(s1,shade=True,color='r')

圖二

# 直接呼叫 matplotlib 的api
# 暫時未解決問題  
sns.plt.hist(s1)

二、實現柱狀圖和熱力圖

# 下載  seaborn的資料作為實驗資料
# seaborn 在github上有
df = sns.load_dataset('flights')   
df.head()
year month passengers
0 1949 January 112
1 1949 February 118
2 1949 March 132
3 1949 April 129
4 1949 May 121
df.shape
(144, 3)
# 透視表 檢視資料更方便
df = df.pivot(index='month',columns='year',values='passengers')
df.head()
year 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960
month
January 112 115 145 171 196 204 242 284 315 340 360 417
February 118 126 150 180 196 188 233 277 301 318 342 391
March 132 141 178 193 236 235 267 317 356 362 406 419
April 129 135 163 181 235 227 269 313 348 348 396 461
May 121 125 172 183 229 234 270 318 355 363 420 472
# 熱力圖
sns.heatmap(df)

圖三

# 柱狀圖
s = df.sum()
sns.barplot(x=s.index,y=s.values)

圖六

三、seaborn設定影象效果

1.set_style() 風格設定

x = np.linspace(0,14,100)

y1 = np.sin(x)
y2 = np.sin(x+2)*1.25
def sinplot():
    plt.plot(x,y1)
    plt.plot(x,y2)
import seaborn as sns
# 設定風格 style : dict, None, or one of {darkgrid, whitegrid, dark, white, ticks}
# 設定風格  通過字典形式修改原有引數 
sns.set_style("whitegrid",{'grid.color':'red'})  
#  上面匯入 seabron 後改變了影象的效果
sinplot()

圖四

# 檢視風格引數 可自行設定
sns.axes_style()
{'axes.facecolor': 'white',
 'axes.edgecolor': '.8',
 'axes.grid': True,
 'axes.axisbelow': True,
 'axes.linewidth': 1.0,
 'axes.labelcolor': '.15',
 'figure.facecolor': 'white',
 'grid.color': 'red',
 'grid.linestyle': '-',
 'text.color': '.15',
 'xtick.color': '.15',
 'ytick.color': '.15',
 'xtick.direction': 'out',
 'ytick.direction': 'out',
 'xtick.major.size': 0.0,
 'ytick.major.size': 0.0,
 'xtick.minor.size': 0.0,
 'ytick.minor.size': 0.0,
 'legend.frameon': False,
 'legend.numpoints': 1,
 'legend.scatterpoints': 1,
 'lines.solid_capstyle': 'round',
 'image.cmap': 'rocket',
 'font.family': ['sans-serif'],
 'font.sans-serif': ['Arial',
  'DejaVu Sans',
  'Liberation Sans',
  'Bitstream Vera Sans',
  'sans-serif']}
# 還原預設設定
sns.set()
sinplot()

圖五

2.更改曲線屬性 plotting_context() 和 set_context()

# seaborn 設定的 幾種context
context = ['paper','notebook','talk','poster']
# rc={} 修改原有引數
sns.set_context(context[2],rc = {'grid.linewidth':3})
sinplot()

這裡寫圖片描述

# 檢視當前 context 引數
sns.plotting_context()
{'font.size': 15.600000000000001,
 'axes.labelsize': 14.3,
 'axes.titlesize': 15.600000000000001,
 'xtick.labelsize': 13.0,
 'ytick.labelsize': 13.0,
 'legend.fontsize': 13.0,
 'grid.linewidth': 3.0,
 'lines.linewidth': 2.275,
 'patch.linewidth': 0.39,
 'lines.markersize': 9.1,
 'lines.markeredgewidth': 0.0,
 'xtick.major.width': 1.3,
 'ytick.major.width': 1.3,
 'xtick.minor.width': 0.65,
 'ytick.minor.width': 0.65,
 'xtick.major.pad': 9.1,
 'ytick.major.pad': 9.1}

四、seaborn的調色功能

def sinplot2():
    x = np.linspace(0,14,100)
    plt.figure(figsize=(8,6))  # 設定畫布大小
    for i in range(4):
        plt.plot(x,np.sin(x+i)*(i+0.75),label='sin(x+%s)*(%s+0.75)'%(i,i))
        plt.legend()
sinplot2()

這裡寫圖片描述

# 匯入 seaborn 修飾影象
import seaborn as sns
sns.set_style(style='darkgrid')
sinplot2()

這裡寫圖片描述

調色

sns.color_palette()     # RGB 顏色取值
[(0.12156862745098039, 0.4666666666666667, 0.7058823529411765),
 (1.0, 0.4980392156862745, 0.054901960784313725),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)]
# 繪製 color_palette() 顏色板
sns.palplot(sns.color_palette())

這裡寫圖片描述

# coclor_palette 裡定義的顏色名
pal_style = ['deep', 'muted', 'bright', 'pastel', 'dark', 'colorblind']
sns.palplot(sns.color_palette('bright'))

這裡寫圖片描述

設定調色盤

sns.set_palette(sns.color_palette('bright'))
# 修改顏色版 即顏色組合後後繪製的影象
sinplot2()

這裡寫圖片描述

# 恢復預設風格
sns.set() 
# 使用 with 語句 ,在with 語句中畫圖會使用其設定的風格
# 在 with 外使用預設風格
# 也就是說 with 臨時設定風格
with sns.color_palette('dark'):
    sinplot2()

tu3

# 傳入數值 設定自己的畫板

# RGB 值
pal = sns.color_palette([(0.5,0.2,0.4),(0.3,0.9,0.2)])  
sns.palplot(pal)

tuer

sns.palplot(sns.color_palette('hls',8))

tuyi