1. 程式人生 > >小白學 Python 資料分析(17):Matplotlib(二)基礎操作

小白學 Python 資料分析(17):Matplotlib(二)基礎操作

![](https://cdn.geekdigging.com/python/spider-blog/Python_logo.jpg) > 人生苦短,我用 Python 前文傳送門: [小白學 Python 資料分析(1):資料分析基礎](https://www.geekdigging.com/2020/01/19/6719980708/) [小白學 Python 資料分析(2):Pandas (一)概述](https://www.geekdigging.com/2020/01/20/6718497214/) [小白學 Python 資料分析(3):Pandas (二)資料結構 Series](https://www.geekdigging.com/2020/02/04/3234667780/) [小白學 Python 資料分析(4):Pandas (三)資料結構 DataFrame](https://www.geekdigging.com/2020/02/05/9920298470/) [小白學 Python 資料分析(5):Pandas (四)基礎操作(1)檢視資料](https://www.geekdigging.com/2020/02/16/6852411690/) [小白學 Python 資料分析(6):Pandas (五)基礎操作(2)資料選擇](https://www.geekdigging.com/2020/02/20/6566891797/) [小白學 Python 資料分析(7):Pandas (六)資料匯入](https://www.geekdigging.com/2020/02/23/7355903936/) [小白學 Python 資料分析(8):Pandas (七)資料預處理](https://www.geekdigging.com/2020/02/25/9013297409/) [小白學 Python 資料分析(9):Pandas (八)資料預處理(2)](https://www.geekdigging.com/2020/02/27/2857868620/) [小白學 Python 資料分析(10):Pandas (九)資料運算](https://www.geekdigging.com/2020/02/29/5808964196/) [小白學 Python 資料分析(11):Pandas (十)資料分組](https://www.geekdigging.com/2020/03/03/5975552137/) [小白學 Python 資料分析(12):Pandas (十一)資料透視表(pivot_table)](https://www.geekdigging.com/2020/03/04/8327177610/) [小白學 Python 資料分析(13):Pandas (十二)資料表拼接](https://www.geekdigging.com/2020/03/06/5036602239/) [小白學 Python 資料分析(14):Pandas (十三)資料匯出](https://www.geekdigging.com/2020/03/07/6918490736/) [小白學 Python 資料分析(15):資料視覺化概述](https://www.geekdigging.com/2020/03/09/7393240956/) [小白學 Python 資料分析(16):Matplotlib(一)座標系](https://www.geekdigging.com/2020/03/14/2444388683/) ## 座標軸標題設定 各位同學好,我又來了,本文給大家帶來的是有關 Matplotlib 的一些基礎操作。 ![](https://cdn.geekdigging.com/data_analysis/data_visualization/nuli.jpg) 在前一篇文章中,我們介紹瞭如何使用 Matplotlib 繪製座標系,本文我們接著介紹 Matplotlib 。 先看一個簡單的示例: ```python import matplotlib.pyplot as plt x_data = ['2011','2012','2013','2014','2015','2016','2017'] y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xlabel('年份') plt.ylabel('銷量') plt.plot(x_data, y_data) plt.show() ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou.png) 好像哪裡不太對的樣子,橫軸和數軸的標題沒有顯示出來,看一下程式執行,沒有報錯,但是報出來一個警告: ```shell RuntimeWarning: Glyph 24180 missing from current font. ``` 這個警告的含義是 plt 畫圖是找不到字型,那麼這裡我們手動設定一下字型: ```python plt.rcParams['font.sans-serif']=['SimHei'] ``` 完整的樣例程式碼如下: ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] x_data = ['2011','2012','2013','2014','2015','2016','2017'] y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xlabel('年份') plt.ylabel('銷量') plt.plot(x_data, y_data) plt.show() ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_1.png) 這下顯示正常了。 我們還可以通過引數 `labelpad` 設定標題到座標軸的距離,這裡為了演示效果設定的距離稍微大了點: ```python plt.xlabel('年份', labelpad=50) plt.ylabel('銷量', labelpad=50) ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_2.png) 我們還可以通過引數對文字的相關屬性進行設定,下面看下一些常用的設定引數: ```python plt.xlabel('年份', labelpad=50, fontsize='xx-large', fontweight='bold', rotation='vertical', backgroundcolor='red') plt.ylabel('銷量', labelpad=50) ``` 先看結果: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_3.png) xlabel 中常用的一些引數: * fontsize : 設定字型大小,預設12,可選引數 ['xx-small', 'x-small', 'small', 'medium', 'large','x-large', 'xx-large'] * fontweight : 設定字型粗細,可選引數 ['light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black'] * fontstyle : 設定字型型別,可選引數[ 'normal' | 'italic' | 'oblique' ],italic斜體,oblique傾斜 * verticalalignment : 設定水平對齊方式 ,可選引數 : 'center' , 'top' , 'bottom' ,'baseline' * horizontalalignment : 設定垂直對齊方式,可選引數:left,right,center * rotation : (旋轉角度)可選引數為:vertical,horizontal 也可以為數字 * alpha : 透明度,引數值0至1之間 * backgroundcolor : 標題背景顏色 * bbox : 給標題增加外框 ,常用引數如下: * boxstyle 方框外形 * facecolor (簡寫fc)背景顏色 * edgecolor (簡寫ec)邊框線條顏色 * edgewidth 邊框線條大小 ## 刻度設定 預設座標軸是顯示 x y 的值,但是也可以自定義顯示不同的刻度,這裡需要使用到的函式為 `xticks` 和 `yticks` 兩個函式: ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] x_data = [2011,2012,2013,2014,2015,2016,2017] y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xticks(x_data, ['2011年','2012年','2013年','2014年','2015年','2016年','2017年']) plt.yticks(y_data) plt.plot(x_data, y_data) plt.show() ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_4.png) 有些時候,由於資料脫敏的需要,我們不要顯示刻度,還可以這麼寫: ```python plt.xticks(x_data, []) plt.yticks(y_data, []) ``` 這樣展現出來的圖形如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_5.png) 實際上,我們還有更狠的操作,直接關閉座標軸: ```python plt.axis("off") ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_7.png) ## 範圍設定 我們還可以對座標軸的範圍進行設定,如下: ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] x_data = [2011,2012,2013,2014,2015,2016,2017] y_data = [58000,60200,63000,71000,84000,90500,107000] plt.xlim(2011, 2020) plt.ylim(50000, 90000) plt.plot(x_data, y_data) plt.show() ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_6.png) 這裡設定在 Y 軸上最大值為 90000 ,那麼 2016 和 2017 對應的資料將會無法顯示,實際我們從得出的結果圖上也能看出這一點。 ## 網格線設定 網格線預設是關閉的,我們可以通過函式 `grid` 修改引數 `b` 來開啟網格線,如下: ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] x_data = [2011,2012,2013,2014,2015,2016,2017] y_data = [58000,60200,63000,71000,84000,90500,107000] plt.plot(x_data, y_data) plt.grid(b=True) plt.show() ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/zuobiaozhou_8.png) 我們不僅可開啟網格線,還可以通過引數 `axis` 來控制是開啟哪個軸的網格線: ```python # 開啟 x 軸網格線 plt.grid(b=True, axis='x') # 開啟 y 軸網格線 plt.grid(b=True, axis='y') ``` ## 圖例設定 圖例能對圖表起到註釋的作用,我們可以通過引數 `label` 對該圖表的圖例進行設定,示例如下: ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] x_data = [2011,2012,2013,2014,2015,2016,2017] y_data = [58000,60200,63000,71000,84000,90500,107000] plt.plot(x_data, y_data, label = '折線圖') plt.bar(x_data, y_data, label = '柱狀圖') plt.legend() plt.show() ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/tuli.png) ## 圖表標題設定 圖表標題是用來概括整張圖表現的內容的,我們可以通過如下方式設定一張圖的標題: ```python plt.title(label='xxx 公司 xxx 產品銷量') ``` 結果如下: ![](https://cdn.geekdigging.com/data_analysis/data_visualization/tubiaobiaoti.png) 本文的內容就到這裡了,下一篇我們介紹 Matplotlib 的常用圖表的示例,本文的示例程式碼寫的有點亂,就不貼出來了,當然,如果經常看小編寫的文章的估計都找得到。 ![](https://cdn.geekdigging.com/data_analysis/data_visualization/tiaopi.gif) ## 參考 https://blog.csdn.net/The_Time_Runner/article/details/