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