Python 数据分析与展示笔记3 -- Matplotlib 库基础
生活随笔
收集整理的這篇文章主要介紹了
Python 数据分析与展示笔记3 -- Matplotlib 库基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 數據分析與展示筆記3 – Matplotlib 庫基礎
Python 數據分析與展示系列筆記是筆者學習、實踐Python 數據分析與展示的相關筆記
課程鏈接: Python 數據分析與展示
參考文檔:
Numpy 官方文檔(英文)
Numpy 官方文檔(中文)
PIL 官方文檔
Matplotlib 官方文檔
一、Matplotlib 庫
Matplotlib 是一個 Python 的 2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形。
1、安裝與導入
# 安裝 pip install matplotlib# 導入,常用的是他的繪圖子模塊 pyplot import matplotlib.pyplot as plt2、測試
import matplotlib.pyplot as pltplt.plot([2, 1, 4, 5, 3]) plt.show()二、庫基本繪圖
Matplotlib 繪圖默認有一個畫布,所有的繪圖設置及操作是對同一個畫布進行的,多次plot()會產生覆蓋
1、繪圖函數:plot()
函數原型:
plt.plot(x, y, format_string, **kwargs)參數:
- x:X軸數據,列表或數組,可選
- y:Y軸數據,列表或數組,如果沒有給定x,則默認 x 軸的值為對應的 y 的下標
- format_string:控制曲線的格式字符串,可選
- **kwargs:多組的(x, y, format_string),繪制多條曲線,各條曲線的x不能省略
format_string: 由顏色字符、風格字符和標記字符組成,可自由組合
| ‘b’ | 藍色 |
| ‘g’ | 綠色 |
| ‘r’ | 紅色 |
| ‘c’ | 青綠色 |
| ‘#008000’ | RGB某顏色 |
| ‘m’ | 洋紅色magenta |
| ‘y’ | 黃色 |
| ‘k’ | 黑色 |
| ‘w’ | 白色 |
| ‘0.8’ | 灰度值字符串 |
| ‘‐’ | 實線 |
| ‘‐‐’ | 破折線 |
| ‘‐.’ | 點劃線 |
| ‘:’ | 虛線 |
| ’ ’ | 無線條 |
| ‘.’ | 點標記 |
| ‘,’ | 像素標記(極小點) |
| ‘o’ | 實心圈標記 |
| ‘v’ | 倒三角標記 |
| ‘^’ | 上三角標記 |
| ‘>’ | 右三角標記 |
| ‘<’ | 左三角標記 |
| ‘1’ | 下花三角標記 |
| ‘2’ | 上花三角標記 |
| ‘3’ | 左花三角標記 |
| ‘4’ | 右花三角標記 |
| ‘s’ | 實心方形標記 |
| ‘p’ | 實心五角標記 |
| ‘*’ | 星形標記 |
| ‘h’ | 豎六邊形標記 |
| ‘H’ | 橫六邊形標記 |
| ‘+’ | 十字標記 |
| ‘x’ | x標記 |
| ‘D’ | 菱形標記 |
| ‘d’ | 瘦菱形標記 |
| ‘|’ | 垂直線標記 |
示例:
import matplotlib.pyplot as plt import numpy as npa = np.arange(10) plt.plot(a, a*1.5, 'go-', a, a*2.5, 'rx:', a, a*3.5, '*', a, a*4.5, 'b-.') plt.show()2、坐標圖格式控制
# 設置 x,y 軸范圍 plt.axis([x軸左點,x軸右點,y軸下點,y軸上點])# 網格設置,True為顯示網格,默認不顯示 plt.grid(True)# 顯示 plt.show()# 保存,PNG格式 plt.savefig('圖片路徑',dpi = 每英寸點數)3、顯示中文
全局設置: 修改 rcParams 字典
import matplotlibmatplotlib.rcParams['font.family'] = 'SimHei' matplotlib.rcParams['font.size'] = 20- rcParams 屬性
| ‘font.family’ | 用于顯示字體的名字 |
| ‘font.style’ | 字體風格,正常’normal’或斜體’italic’ |
| ‘font.size’ | 字體大小,整數字號或者’large’、‘x‐small’ |
- 中文字體
| ‘SimHei’ | 中文黑體 |
| ‘SimSun’ | 中文宋體 |
| ‘Kaiti’ | 中文楷體 |
| ‘LiSu’ | 中文隸書 |
| ‘FangSong’ | 中文仿宋 |
| ‘YouYuan’ | 中文幼圓 |
| ‘STSong’ | 華文宋體 |
局部設置: 每個需要繪制文字的函數中單獨設置文字的相關屬性
| fontproperties | 字體類型 |
| fontsize | 字體大小 |
4、文本顯示
| plt.xlabel(‘x軸標簽’) | 對X軸增加文本標簽 |
| plt.ylabel(‘y軸標簽’) | 對Y軸增加文本標簽 |
| plt.title(‘圖名’) | 對圖形整體增加文本標簽 |
| plt.text(x坐標,y坐標,‘文字’) | 在任意位置增加文本 |
| plt.annotate() | 在圖形中增加帶箭頭的注解 |
plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)
- s:注解的字符串
- xy:箭頭坐標(x, y)
- xytext:文字坐標(x, y)
- arrowprops:箭頭格式,字典
示例:
import matplotlib.pyplot as plt import numpy as npa = np.arange(0.0, 5.0, 0.02) plt.plot(a, np.cos(2*np.pi*a))plt.xlabel('橫軸:時間', fontproperties='SimHei', fontsize=20, color='red') plt.ylabel('縱軸:振幅', fontproperties='SimHei', fontsize=20) plt.title(r'正弦波$y=cos(2\pi x)$', fontproperties='SimHei', fontsize=20) plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5), fontsize=15,arrowprops=dict(facecolor='black', shrink=0.1, width=2))plt.axis([-1, 6, -2, 2]) plt.grid(True) plt.show()5、繪圖區域:劃分子圖
簡單的繪圖區域劃分:
- 一次只能選擇一個子圖,子圖的編號從1開始
- 可以重新劃分區域,但是選擇的子圖不能與之前的有交集,否則會覆蓋之前的
- plt.subplot(nrows, ncols, plot_number)
- nrows:分為幾行
- ncols:分為幾列
- plot_number:當前要繪制的子圖號,從左到右從上到下編號
復雜的繪圖區域劃分:
- 劃分繪圖區域網格時,行列的編號都從0開始
- 選擇子圖時,可以按多行多列區域選中
- plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)
- GridSpec:網格的行列數,元組形式,(rows,cols)
- CurSpec:選中子圖的起始網格坐標,元組形式,(row, col)
- colspan:子圖的長,即列數
- rowspan:子圖的高,即行數
GridSpec 類:
- 用于復雜的繪圖區域劃分,子圖選擇更方便
- 采用切片的方法選擇子圖
三、面向對象繪圖
Matplotlib繪圖可以采用面向對象的方式,即可以創建(實例化)多個畫布,分別對不同的畫布進行操作,多一個畫布可以多次 plot() 不會覆蓋
1、創建新畫布:plt.figure()
函數原型:
plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)[source]參數:
- num:整數或字符串,可選,默認值:無。畫布的編號,如果未提供,將創建新圖形,并且圖形編號將自動遞增。畫布對象將此數字保存在 number 屬性中。如果提供了num且存在該num的畫布,返回對它的引用。如果此畫布不存在,則創建并返回畫布對象。如果num是一個字符串,則顯示畫布的窗口標題為 num。
- figsize:整數元組,可選,默認值:無。單位為英寸。如果未提供,則默認為 rcParams[“figure.figsize”]= [6.4, 4.8]
- dpi:整數,可選,默認值:無。畫布的每英寸點數。如果未提供,則默認為 rcParams[“figure.dpi”]= 100
- facecolor:背景顏色。如果未提供,則默認為白色 rcParams[“figure.facecolor”]= ‘w’
- edgecolor:邊框顏色。如果未提供,則默認為白色 rcParams[“figure.edgecolor”]= ‘w’。
- frameon:bool,optional,默認值:True,如果為False,則禁止繪制圖框
- FigureClass:Figure的 子類,(可選)使用自定義Figure實例
- clear:bool,可選,默認值:False,如果為True并且該圖已經存在,那么它將被清除
返回:
- 返回畫布對象
- 如果要創建許多畫布,確保明確調用 plt.close() 釋放未使用的畫布,使pyplot可以正確清理內存
- rcParams定義的默認值,可以在 matplotlibrc 文件中修改
示例:
import numpy as np import matplotlib.pyplot as plta = np.arange(0, 5.0, 0.02)# 創建畫布 fig1 = plt.figure(num='fig', figsize=(6, 4)) plt.plot(a, np.cos(a), c="red", label="cos") plt.plot(a, np.sin(a), c="blue", label="sin") # 設置圖例的位置 plt.legend(loc="best")# 嵌入小圖,位置為畫布的比例 left, bottom, width, height = 0.2, 0.2, 0.2, 0.1 ax1 = fig1.add_axes([left, bottom, width, height]) ax1.plot(a, a)plt.show()GOOD LUCK!
總結
以上是生活随笔為你收集整理的Python 数据分析与展示笔记3 -- Matplotlib 库基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 数据分析与展示笔记2 --
- 下一篇: Python 数据分析与展示笔记4 --