Python - Seaborn可視化:圖形個性化設置的幾個小技巧

 

1 概述

在可視化過程當中,常常會對默認的製圖效果不滿意,但願能個性化進行各類設置。html

本文經過一個簡單的示例,來介紹seaborn可視化過程當中的個性化設置。包括經常使用的設置,如:vue

  1. 設置圖表顯示顏色
  2. 設置圖表標題,包括顯示位置,字體大小,顏色等
  3. 設置x軸和y軸標題,包括顏色,字體大小
  4. 設置x軸和y軸刻度內容,包括顏色、字體大小、字體方向等
  5. 將x軸和y軸內容逆序顯示
  6. 設置x軸或y軸顯示位置

本文的運行環境:python

  1. windows 7
  2. python 3.5
  3. jupyter notebook
  4. seaborn 0.7.1
  5. matplotlib 2.0.2

2 未個性化設置的情形

本文的數據來自UCI的數據集」sonar」,用pandas直接讀取數據。以下:windows

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
% matplotlib inline

target_url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data'
df = pd.read_csv(target_url, header=None, prefix='V')
corr = df.corr()

首先來看看沒有進行個性化設置時的顯示狀況,以下:微信

f, ax= plt.subplots(figsize = (14, 10))

sns.heatmap(corr,cmap='RdBu', linewidths = 0.05, ax = ax)

# 設置Axes的標題
ax.set_title('Correlation between features')

f.savefig('sns_style_origin.jpg', dpi=100, bbox_inches='tight')

圖片顯示效果以下:markdown

seaborn製圖的默認效果其實仍是不錯的。app

3 進行個性化設置

對於上面這張圖,可能讓y軸從下到上,從v0開始顯示,這樣顯示出來的對角線可能更符合咱們的視覺顯示效果。字體

這就要用到 將y軸內容進行可逆顯示,涉及的代碼以下:ui

# 將y軸或x軸進行逆序
ax.invert_yaxis()
# ax.invert_xaxis()

其餘的個性化設置的代碼,包括:url

將x軸刻度放置在top位置的幾種方法

# 將x軸刻度放置在top位置的幾種方法
# ax.xaxis.set_ticks_position('top')
ax.xaxis.tick_top()
# ax.tick_params(axis='x',labelsize=6, colors='b', labeltop=True, labelbottom=False) # x軸

設置座標軸刻度參數,」axis」不寫的時候,默認是x軸和y軸的參數同時調整。

# 設置座標軸刻度的字體大小
# matplotlib.axes.Axes.tick_params
ax.tick_params(axis='y',labelsize=8) # y軸

旋轉軸刻度上文字方向的兩種方法

# 旋轉軸刻度上文字方向的兩種方法
ax.set_xticklabels(ax.get_xticklabels(), rotation=-90)
# ax.set_xticklabels(corr.index, rotation=90)

保存圖片,設置bbox_inches=’tight’,保存的圖片則不會出現部份內容顯示不全的現象。

f.savefig('sns_style_update.jpg', dpi=100, bbox_inches='tight')

整合好的代碼以下,你們能夠運行試試效果。

f, ax = plt.subplots(figsize = (14, 10))

# 設置顏色
cmap = sns.cubehelix_palette(start = 1, rot = 3, gamma=0.8, as_cmap = True)

# color: https://matplotlib.org/users/colormaps.html
sns.heatmap(corr,cmap='RdBu', linewidths = 0.05, ax = ax)

# 設置Axes的標題
ax.set_title('Correlation between features', fontsize=18, position=(0.5,1.05))

# 將y軸或x軸進行逆序
ax.invert_yaxis()
# ax.invert_xaxis()

ax.set_xlabel('X Label',fontsize=10)

# 設置Y軸標籤的字體大小和字體顏色
ax.set_ylabel('Y Label',fontsize=15, color='r')

# 設置座標軸刻度的字體大小
# matplotlib.axes.Axes.tick_params
ax.tick_params(axis='y',labelsize=8) # y軸
# ax.tick_params(axis='x',labelsize=6, colors='b', labeltop=True, labelbottom=False) # x軸

# 將x軸刻度放置在top位置的幾種方法
# ax.xaxis.set_ticks_position('top')
ax.xaxis.tick_top()
# ax.tick_params(axis='x',labelsize=6, colors='b', labeltop=True, labelbottom=False) # x軸

# 修改tick的字體顏色
# ax.tick_params(axis='x', colors='b') # x軸

# 旋轉軸刻度上文字方向的兩種方法
ax.set_xticklabels(ax.get_xticklabels(), rotation=-90)
# ax.set_xticklabels(corr.index, rotation=90)

# 單獨設置y軸或x軸刻度的字體大小, 調整字體方向
# ax.set_yticklabels(ax.get_yticklabels(),fontsize=6)
# ax.set_xticklabels(ax.get_xticklabels(), rotation=-90)

f.savefig('sns_style_update.jpg', dpi=100, bbox_inches='tight')

圖形顯示效果以下:

這些個性化的設置,其實大部分都是使用的matplotlib的內容,seaborn是基於matplotlib衍生的,因此能夠跟matplotlib進行融合使用。

固然,並非每次都須要進行個性定製,具體能夠根據本身的需求來設置。

若是您喜歡個人文章,歡迎關注微信公衆號「Python數據之道」(ID:PyDataRoad

相關文章
相關標籤/搜索