點選上方
Z先生點記
,加為星標
第一時間收到 Python 技術乾貨!
Matpltlibrc file 設定圖表屬性
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 提供一個 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。rcParams 的一種縮寫方法為 mpl。rc() 函式
mpl。rc(‘lines’, linewidth=4, linestyle=‘-。’)
plt。plot(X,S,color = ‘red’)
如果不想使用之前設定的全域性樣式,也可以在圖表繪製時單獨設定,這樣的話會直接把原來的樣式覆蓋掉即,例如這裡只改變線條樣式, linewidth 設為 “-。”,顏色設為橘黃色,其他引數不變:
除了上面說的常用屬性設定之外,也可以利用 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”)
據官網介紹,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 提供很強大的樣式修改、切換機制,例如說我們看到某個圖表樣式比較不錯,可以把它儲存下為 style 檔案並設定為 matplibplot 呼叫介面,下次再繪製相同樣式圖表時只需填充資料,呼叫一下即可
在定義樣式之前,可以先預覽一下matplotlib 提供的 圖表樣式種類,在 matplotlib 3。1。1 版本中一共提供了 26個 樣式
print(plt。style。available)
[‘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 除了能夠使用單一 style 之外,也可以 把多個 style 混在一起使用,把樣式名以列表形式儲存即可;但在使用過程中,如果多個樣式的屬性發生衝突(一個樣式背景為黑色,一個背景為白色),列表右邊的樣式會覆蓋左邊的;
plt。style。use([‘fivethirtyeight’,‘dark_background’])
S = np。cos(X)
plt。plot(X,S)
自定義樣式
也可以自己定義樣式,樣式裡面屬性以下面方式定義,儲存
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 範圍內建立的圖表格式有效