在一般情況下,刻度線的位置和刻度線相應位置處的數(shù)值(刻度標簽)是由生成圖形的原始數(shù)據(jù)決定的。如果需要調(diào)整刻度線的位置和對應的數(shù)值,那么可以使用函數(shù) xticks()和 yticks(),或者實例方法set_xticks()和set_yticks()進行展示效果的改變。但是,這種調(diào)整是相對固定的。也就是說,我們不能根據(jù)原始數(shù)據(jù)的改變做出相應的調(diào)整,只能機械地用不變的模式進行可視化效果的提高。下面,我們就介紹如何根據(jù)不同的原始數(shù)據(jù)科學、合理地調(diào)整刻度線的位置和數(shù)值。
代碼
運行結(jié)果
代碼講解
(1)使用Python中的函數(shù)split(),對變量ticklabels存儲的字符串以空格作為分隔符進行切分,從而形成將字符串切片后的由字符串元素所組成的列表ticklabels_list。
(2)在這里,我們沒有使用實例方法set_xticks()設置刻度線的位置和相應位置處的數(shù)值,而是通過實例方法set_major_formatter()和set_major_locator()分別設置主刻度線所在位置的數(shù)值和刻度線的位置的。這兩個實例方法的參數(shù)分別是類Formatter的子類FuncFormatter的實例和類Locator的實例,其中,子類FuncFormatter的構(gòu)造函數(shù)接收函數(shù)參數(shù)tick_controller,函數(shù)tick_controller()接收兩個參數(shù),分別是刻度線所在位置的數(shù)值 value 和刻度線所在的位置 position。如果類 MaxNLocator的構(gòu)造函數(shù)中的參數(shù)integer取值是True,那么,只有當刻度線所在位置的數(shù)值是整數(shù)時,軸脊上的刻度線和刻度線對應位置的數(shù)值才會顯示。
(3)通過調(diào)用實例方法get_xticklabels()來獲得Text實例列表xticklabel_text,通過文本Text的參數(shù)對應的實例方法來設置x軸的刻度標簽的樣式,即更新類Text的實例的屬性。調(diào)整x軸的刻度標簽的樣式具體包括設置字體類型、改變文本尺寸、文本渲染類型和文本旋轉(zhuǎn)角度。
需要補充的是,實例方法margins(m)可以調(diào)整數(shù)據(jù)范圍的空白區(qū)域,也就是說,m倍的數(shù)據(jù)區(qū)間會被添加到原來數(shù)據(jù)區(qū)間的兩端。數(shù)據(jù)范圍的空白區(qū)域的調(diào)整類型既包括x軸的數(shù)據(jù)區(qū)間,也包括y軸的數(shù)據(jù)區(qū)間,參數(shù)m的取值范圍是開區(qū)間( 0.5,+ )內(nèi)的浮點數(shù)。例如,如果數(shù)據(jù)區(qū)間是[0,2],那么參數(shù)m=0.2就會將原來的數(shù)據(jù)區(qū)間變成[ 0.4,2.4],數(shù)據(jù)范圍的空白區(qū)域增加了。如果參數(shù) m在開區(qū)間( 0.5,0)內(nèi)取值,那么原來的數(shù)據(jù)區(qū)間就會被剪切,即原來的數(shù)據(jù)范圍的空白區(qū)域會縮小。例如,參數(shù)m= 0.2,數(shù)據(jù)區(qū)間[0,2]就會變成[0.4,1.6],即數(shù)據(jù)區(qū)間[0,2]的兩端會被去掉0.4個單位長度,數(shù)據(jù)范圍的空白區(qū)域被削減了。實例方法margins(m,n)中的參數(shù)m和n分別用于調(diào)整x軸和y軸的數(shù)據(jù)范圍的空白區(qū)域。當然,也可以分別通過實例方法set_xmargin()和set_ymargin()調(diào)整x軸和y軸的數(shù)據(jù)范圍的空白區(qū)域。因此,實例方法margins()的實質(zhì)作用就是通過調(diào)整坐標軸的數(shù)據(jù)范圍,來調(diào)整繪圖區(qū)域里的圖形之外的空白區(qū)域的大小。