Matplotlib繪圖|快速定義圖表樣式的小技巧

點選上方

Z先生點記

,加為星標

第一時間收到 Python 技術乾貨!

Matpltlibrc file 設定圖表屬性

Matplotlib 在繪圖過程中,每建立一個圖表,都要對該圖表內的樣式(例如 字型大小、顏色、解析度、橫縱座標刻度、橫縱座標標籤)設定一次,重複乏味,如下展示的是一個正弦函式曲線

Matplotlib繪圖|快速定義圖表樣式的小技巧

X =np。linspace(-np。pi,np。pi,256,endpoint =True)

S = np。sin(X)

plt。plot(X,S,color = “blue”,linewidth = 3。0,linestyle = “:”)

Matplotlib繪圖|快速定義圖表樣式的小技巧

為了方便起見,matplotlib 提供一個 matplotlibrc 檔案介面,來全域性自定義圖表屬性(圖表大小、DPI、線的寬度、座標軸、樣式、網格屬性等),使用方法為 rcParams 命令,一次定義,對接下來建立的全部圖表的樣式都起效,避免了來回調參的麻煩

rcParsms 引數是以字典鍵值對的形式宣告,格式如下

matplotlib。rcParams[‘lines。linewidth’] = 2

matplotlib。rcParams[‘lines。linestyle’] = ‘——’

在建立圖表之前,對全域性引數進行設定,設定好了之後可以應用到全部圖表中,不需要自己再進行逐一設定

mpl。rcParams[‘lines。linewidth’] = 2。5#linewidth

mpl。rcParams[‘lines。linestyle’] = ‘-’#( mpl 是 matplotlib 的縮寫)

plt。plot(X,S,color = ‘red’)

Matplotlib繪圖|快速定義圖表樣式的小技巧

上面提到的 matplotlib。rcParams 的一種縮寫方法為 mpl。rc() 函式

mpl。rc(‘lines’, linewidth=4, linestyle=‘-。’)

plt。plot(X,S,color = ‘red’)

如果不想使用之前設定的全域性樣式,也可以在圖表繪製時單獨設定,這樣的話會直接把原來的樣式覆蓋掉即,例如這裡只改變線條樣式, linewidth 設為 “-。”,顏色設為橘黃色,其他引數不變:

Matplotlib繪圖|快速定義圖表樣式的小技巧

除了上面說的常用屬性設定之外,也可以利用 rcParams 改變橫坐軸的座標標籤,大小,刻度顏色等;

mpl。rcParams[‘axes。grid’] =True

mpl。rcParams[‘axes。labelsize’] = 15

mpl。rcParams[‘axes。labelcolor’] =“red”

mpl。rcParams[‘xtick。color’] = ‘red’

mpl。rcParams[‘xtick。alignment’] = “center”

plt。plot(X,S,color = ‘orange’)

plt。ylabel(“Y”)

plt。xlabel(“X”)

Matplotlib繪圖|快速定義圖表樣式的小技巧

據官網介紹,rcParam 還支援 FONT、LaTex、TEXT、IMAGES、ANIMATION 等類別屬性修改,足夠日常繪表的需求

## Matplotlib configuration are currently divided into following parts:

## - BACKENDS

## - LINES

## - PATCHES

## - HATCHES

## - BOXPLOT

## - FONT

## - TEXT

## - LaTeX

## - AXES

## - DATES

## - TICKS

## - GRIDS

## - LEGEND

## - FIGURE

## - IMAGES

## - CONTOUR PLOTS

## - ERRORBAR PLOTS

## - HISTOGRAM PLOTS

## - SCATTER PLOTS

## - AGG RENDERING

## - PATHS

## - SAVING FIGURES

## - INTERACTIVE KEYMAPS

## - ANIMATION

具體詳細內容可以參考官網文件:https://matplotlib。org/tutorials/introductory/customizing。html

Matplotlib 設定樣式 style

看過 R 語言裡的一些視覺化包 ggplot2,recharts 做出來的圖,與 matplotlib 一對比,覺得 matplotlib 的視覺化效果差一點,下圖是 ggplot 繪製得到的圖表

Matplotlib繪圖|快速定義圖表樣式的小技巧

如果仔細研究的話,其實 matplotlib 在視覺化效果方面也是非常不錯的,matplotlib 提供很強大的樣式修改、切換機制,例如說我們看到某個圖表樣式比較不錯,可以把它儲存下為 style 檔案並設定為 matplibplot 呼叫介面,下次再繪製相同樣式圖表時只需填充資料,呼叫一下即可

在定義樣式之前,可以先預覽一下matplotlib 提供的 圖表樣式種類,在 matplotlib 3。1。1 版本中一共提供了 26個 樣式

print(plt。style。available)

#print

[‘bmh’,

‘classic’,

‘dark_background’,

‘fast’,

‘fivethirtyeight’,

‘ggplot’,

‘grayscale’,

‘seaborn-bright’,

‘seaborn-colorblind’,

‘seaborn-dark-palette’,

‘seaborn-dark’,

‘seaborn-darkgrid’,

‘seaborn-deep’,

‘seaborn-muted’,

‘seaborn-notebook’,

‘seaborn-paper’,

‘seaborn-pastel’,

‘seaborn-poster’,

‘seaborn-talk’,

‘seaborn-ticks’,

‘seaborn-white’,

‘seaborn-whitegrid’,

‘seaborn’,

‘Solarize_Light2’,

‘tableau-colorblind10’,

‘_classic_test’]

使用內建樣式

樣式使用方法相對比較簡單,一行程式碼即可,這裡設定的樣式以 ggplot 為例

plt。style。use(“ggplot”)

S = np。cos(X)

plt。plot(X,S)

Matplotlib繪圖|快速定義圖表樣式的小技巧

混合樣式使用

matplotlib 除了能夠使用單一 style 之外,也可以 把多個 style 混在一起使用,把樣式名以列表形式儲存即可;但在使用過程中,如果多個樣式的屬性發生衝突(一個樣式背景為黑色,一個背景為白色),列表右邊的樣式會覆蓋左邊的;

plt。style。use([‘fivethirtyeight’,‘dark_background’])

S = np。cos(X)

plt。plot(X,S)

Matplotlib繪圖|快速定義圖表樣式的小技巧

自定義樣式

也可以自己定義樣式,樣式裡面屬性以下面方式定義,儲存

axes。titlesize : 24

axes。labelsize : 20

lines。linewidth : 3

lines。markersize : 10

xtick。labelsize : 16

ytick。labelsize : 16

屬性定義完之後儲存在一個檔案中,檔名格式需要有所要求:需字尾名為 。mplstyle ;呼叫時,利用 pyplot。use。style( “你的style 檔案路徑”) 命令即可

>>> import matplotlib。pyplot as plt

>>> plt。style。use(‘。/images/presentation。mplstyle’)

臨時圖表樣式

需要注意的是上面提到用 plt。style。use() 命令設定的是全域性 style,後面建立圖表後,預設使用的樣式都是一樣的;Matplotlib 在這裡對於設定完 全域性樣式之後,對於某一個圖表想要設定為特定的樣式,加入了臨時樣式的概念:

with plt。style。context(‘dark_background’):

plt。plot(np。sin(np。linspace(0, 2 * np。pi)))

plt。show()

在上面的方法中,用 with 建立了一個臨時樣式 ,用到了 plt。style。context() 函式,建立的樣式是有範圍限制的,只對 with 範圍內建立的圖表格式有效

Matplotlib繪圖|快速定義圖表樣式的小技巧

頂部