首頁 > 繪畫

matplotlib圖形樣式

作者:由 司波達也Owen 發表于 繪畫日期:2022-07-29

rlw是什麼顏色

呼叫模組pyplot中的函式實現刻度樣式的設定

我們知道,語句“ax。tick_params()”是透過呼叫例項ax的例項方法進行刻度樣式設定的。同時,透過呼叫模組pyplot中的函式也可以實現刻度樣式的設定工作。具體而言,模組pyplot中的刻度樣式的設定是透過函式tick_params()實現的,即可以執行語句“plt。tick_params()”來進行刻度樣式的設定。前者是matplotlib的面向物件的操作方法,後者是呼叫模組pyplot的API的操作方法,這是兩種不同思想的操作模式,雖然使用pyplot模組繪製圖表非常方便,但是要想使圖表有更多的調整和定製化展示,還是應該使用matplotlib的面向物件的操作方法。希望大家加以甄別和掌握,從而根據具體的實踐需求靈活地運用相應的操作方法,實現高效精細地展示資料集的視覺化目標。

案例——刻度標籤和刻度線樣式的定製化

下面,我們結合具體案例,分別透過調整x軸的刻度標籤和y軸的刻度線的樣式,來講解面向物件的操作方法。

(1)程式碼實現

import matplotlib。pyplot as plt

import numpy as np

fig = plt。figure(facecolor=(1。0,1。0,0。9412))

ax = fig。add_axes([0。1,0。4,0。5,0。5])

for ticklabel in ax。xaxis。get_ticklabels():

ticklabel。set_color(“slateblue”)

ticklabel。set_fontsize(18)

ticklabel。set_rotation(30)

for tickline in ax。yaxis。get_ticklines():

tickline。set_color(“lightgreen”)

tickline。set_markersize(20)

tickline。set_markeredgewidth(2)

plt。show()

(2)執行結果

執行結果如圖1所示。

matplotlib圖形樣式

圖1

(3)程式碼精講

首先生成Figure例項fig,然後向畫布新增座標軸生成例項ax,其中,add_axes()的引數是一個座標軸位置和大小的四元列表。透過ax。xaxis獲得x軸例項,呼叫例項方法get_ticklabels()獲得Text例項列表,使用for迴圈對例項元素Text進行不同屬性的屬性值的設定。同理,透過ax。yaxis獲得y軸例項,從而藉助例項方法get_ticklines()獲得Line2D例項列表,也是使用for迴圈對例項元素Line2D進行不同屬性的屬性值的設定。最終,完成座標軸的刻度標籤和刻度線的樣式的設定工作。

新增有指示註解和無指示註解

當我們想對圖形做出一些註釋和說明時,可以使用註解annotate,相對應的面向物件的例項方法是Axes。annotate()。註解本身也有作用物件之分,有對細節做出標誌的有指示註解和對整體做出說明的無指示註解兩類。接下來,我們就逐一加以說明。

有指示註解是透過箭頭指示的方法對繪圖區域中的內容進行解釋的標註方法。無指示註解是單純使用文字進行內容解釋或是說明的標註方法。為了清楚地說明這兩種註解的使用方法和應用場景,我們透過具體程式碼來講解有指示註解和無指示註解的設定方法。

下面我們就用Python語句來講解兩類註解的操作方法,有指示註解和無指示註解的新增方法主要是透過函式annotate()和text()來實現的。

(1)程式碼實現

import numpy as np

import matplotlib。pyplot as plt

x = np。linspace(0。5,3。5,100)

y = np。sin(x)

fig = plt。figure(figsize=(8,8))

ax = fig。add_subplot(111)

# set subplot

ax。plot(x, y, c=“b”, ls=“——”,lw=2)

# Annotate the point xy with text withthe “arrowstyle”

ax。annotate(“maximum”,xy=(np。pi/2,1。0),xycoords=“data”,

xytext=((np。pi/2)+0。15,0。8),textcoords=“data”,

weight=“bold”,color=“r”,

arrowprops=dict(arrowstyle=“->”,

connectionstyle=“arc3”,

color=“r”))

# Annotate the whole points with text withoutthe “arrowstyle”

# Add text to the axes

ax。text(2。8,0。4,“$y=\sin(x)$”,fontsize=20,color=“b”,

bbox=dict(facecolor=‘y’, alpha=0。5))

plt。show()

(2)執行結果

執行結果如圖2所示。

matplotlib圖形樣式

圖2

(3)程式碼精講

首先生成例項ax,然後繪製折線圖ax。plot()。接下來,我們對摺線圖做出進一步說明,我們需要指出折線圖的頂點,這就需要藉助有指示註解來加以說明,為了解釋例項方法annotate()的使用方法,我們對程式碼實現部分的語句進行簡化處理,以使讀者掌握例項方法annotate()中的引數使用方法。透過呼叫“ax。annotate(s,xy,xycoords,xytext,textcoords,weight,color,arrowprops)”語句來實現繪製有指示註解的目標,其中引數的含義如下所示。

● s:註解的內容。

● xy:需要進行解釋的位置,即被解釋內容的位置。

● xycoords:xy的座標系統,引數值data表示與折線圖使用相同的座標系統。

● xytext:註釋內容所在的位置,如果把註釋內容想象成一個矩形,xytext標記的是左上角頂點的位置。

● textcoords:xytext的座標系統。

● weight:註解內容的顯示風格。

● color:註解內容的顏色。

● arrowprops:指示箭頭的屬性,包括箭頭風格、顏色等。

對摺線圖的頂點進行詳細的解釋後,我們需要對摺線圖本身加以說明,告訴讀者這是一條正弦函式曲線的區域性,這時候就需要新增無指示註解。透過呼叫ax。text(x,y,s,**kw)例項方法來完成,其引數的含義如下所示。

● x,y:註解的橫縱座標,如果把註釋內容想象成一個矩形,x,y標記的是左上角頂點的位置。

● s:註解內容。

值得注意的是,有指示註解和無指示註解的主要區別是有無箭頭顯示,也就是對被解釋內容的精確定位。

實現標題和座標軸標籤的投影效果

標題和座標軸標籤都是對繪圖區域中的圖形進行註釋的文字內容,既然是文字內容,我們就可以對文字內容的樣式進行設定。設定標題和座標軸的投影效果就是調整文字內容樣式的有力探索。下面,我們就分別完成設定標題和座標軸標籤的投影效果的工作。

下面我們就用Python語句來講解實現標題和座標軸標籤的投影效果的操作方法,這裡不能簡單地透過呼叫函式來實現。我們需要引入一個新類patheffects(路徑效果),從而完成後續的操作。

(1)程式碼實現

matplotlib圖形樣式

matplotlib圖形樣式

matplotlib圖形樣式

(2)程式碼精講

這裡我們引入一個新類patheffects(路徑效果),將patheffects簡記成pes。首先,我們先對標題和座標軸標籤的內容進行新增,將標題和座標軸的文字內容物件進行儲存,放到變數title_text_obj、xaxis_label_text_obj和yaxis_label_text_obj中。然後,設定文字內容投影,這裡主要透過呼叫Artist抽象基類的例項方法Artist。set_path_effects(path_effects)來實現,例項方法set_path_effects(path_effects)中的引數path_effects是例項列表,列表中的例項就是呼叫pes類中的withSimplePatchShadow類。初始化函式withSimplePatchShadow()的主要引數的含義如下所示。

● offset:文字內容投影相對文字內容本身的偏離距離。

● shadow_rgbFace:投影的顏色。

● alpha:投影的透明度,範圍是0。0~1。0,數值越大透明度越小。