小白學 Python 資料分析(17):Matplotlib(二)基礎操作
阿新 • • 發佈:2020-03-20
![](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/