參考文檔: https://matplotlib.org/gallery/index.html
plot()繪圖函數
plt.plot(x, y, format_string, **kwargs)
x x軸 清單或數組
y y軸 清單或數組
fromat_string 格式字元串
顔色字元
b,藍色
g,綠色
r,紅色
c,青綠色cyan
m,洋紅色magenta
y,黃色
k,黑色
w,白色
#008000 RGB顔色
0.8 灰階值
風格字元
- 實線
-- 破折線
-. 點劃線
: 虛線
'' 無線條
标記字元
. 點标記
, 像素标記
o 實心圈标記
v 倒三角标記
^ 上三角标記
> 右三角标記
< 左三角标記
1 下花三角标記
2 上花三角标記
3 左花三角标記
4 右花三角标記
s 實心方形标記
p 實心五角标記
* 星型标記
h 豎六邊形标記
H 橫六邊形标記
+ 十字标記
x x标記
D 菱形标記
d 瘦菱形标記
| 垂直線标記
**kwargs
color 控制顔色 color="green"
linestyle 線條風格 linestyle="dashed"
marker 标記風格 marker="o"
markerfacecolor 标記顔色 markerfacecolor="blue"
markersize 标記尺寸 markersize=20
...
中文顯示
matpoltlib預設不支援中文
方式一:matplotlib.rcParams全局設定(字典)
font.family 顯示字型
SimHei 中文黑體
Kaiti 中文楷體
LiSu 中文隸書
FangSong 中文仿宋
YouYuan 中文幼圓
STSong 華文宋體
font.style 字型風格 正常normal 斜體 italic
font.size 字型大小 整數字号或large x-small
方式二 單獨設定參數 fontproperties
pyplot文本顯示函數
plt.xlabel() x軸文本标簽
plt.ylabel() y軸文本标簽
plt.title() 圖形整體标簽
plt.text() 任意位置增加文本
plt.annotate() 帶箭頭的注解
繪圖區域
1、plt.subplot(nrows, ncols, plot_number)
2、plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)
設定網格,選中網格,确定選中行列區域數量,編号從0開始
例如:plt.subplot2grid((3,3), (1,0), colspan=2)
3、GridSpes類
from matplotlib.gridspec import GridSpec
gs = GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
代碼執行個體
引入子產品
# -*- coding: utf-8 -*-
# @File : matplotlib_demo.py
# @Date : 2018-05-06
from matplotlib import rcParams
import matplotlib.pyplot as plt
import numpy as np
繪制圖形并儲存
def foo1():
# 設定y軸數值
plt.plot([3, 1, 4, 5, 2])
# 設定y軸标簽
plt.ylabel("grade")
# 儲存,預設為png, dpi圖檔品質
plt.savefig("img1", dpi=600)
# 顯示
plt.show()
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CMzMjZ5UTOjBTO1QWO4ATY3IWN0YmN0IzN4ADNmVTZx8CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
繪制x 軸和 y 軸的資料
def foo2():
plt.plot([1, 2, 3, 4, 5], [3, 1, 4, 5, 2])
plt.ylabel("grade")
# 設定x軸,y軸起止點坐标
plt.axis([1, 5, 0, 6])
plt.savefig("img2", dpi=600)
plt.show()
多條線條
def foo3():
a = np.arange(10)
plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5)
plt.savefig("img3", dpi=600)
plt.show()
使用格式字元串
def foo4():
a = 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.savefig("img4", dpi=600)
plt.show()
使用關鍵字标記
def foo5():
a = np.arange(10)
plt.plot(a, a*1.5, color="green", linestyle="dashed", marker='o')
plt.savefig("img5", dpi=600)
plt.show()
使用中文,方式一 全局設定
def foo6():
# 設定中文樣式
rcParams["font.family"]="SimHei" #黑體
rcParams["font.size"]= 20
# 繪制曲線
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), "r--")
plt.xlabel("x軸坐标")
plt.ylabel("y軸坐标")
plt.savefig("img6", dpi=600)
plt.show()
使用中文,方式二 局部設定
def foo7():
# 繪制曲線
a = np.arange(0.0, 5.0, 0.02)
plt.xlabel("x軸坐标", fontproperties="SimHei", fontsize=20)
plt.ylabel("y軸坐标", fontproperties="SimHei", fontsize=20)
plt.plot(a, np.cos(2*np.pi*a), "r--")
plt.savefig("img7", dpi=600)
plt.show()
設定文本參數
def foo8():
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), "r--")
plt.xlabel("橫軸:時間", fontproperties="SimHei", fontsize=15, color="green")
plt.ylabel("縱軸:振幅", fontproperties="SimHei", fontsize=15, color="red")
plt.title("正弦波執行個體$y=cos(2\pi x)$", fontproperties="SimHei", fontsize=25)
plt.text(5, 1, "$\mu=100$", fontsize=15)
# 注解
plt.annotate("$\mu=100$", xy=(2, 1), xytext=(3, 1.3),
arrowprops=dict(facecolor="black", shrink=0.1, width=2))
plt.axis([-1, 6, -2, 2])
plt.grid(True) # 顯示網格
plt.savefig("img8", dpi=600)
plt.show()
繪圖區域1
def foo9():
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
a = np.arange(0.0, 5.0, 0.02)
# 設定繪圖區域
plt.subplot(2, 1, 1)
plt.plot(a, f(a))
# 設定繪圖區域
plt.subplot(212)
plt.plot(a, np.cos(2*np.pi*a), "r--")
plt.savefig("img9", dpi=600)
plt.show()
繪圖區域2
def foo10():
# 左上區域
plt.subplot2grid((3,3), (0,0), colspan=2)
plt.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
# 右邊區域
plt.subplot2grid((3,3), (0,2), rowspan=3)
plt.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
# 左中區域
plt.subplot2grid((3,3), (1,0), colspan=2)
plt.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
# 左下區域
plt.subplot2grid((3,3), (2,0), colspan=2)
plt.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
plt.savefig("img10", dpi=600)
plt.show()
繪圖區域3
from matplotlib.gridspec import GridSpec
def foo11():
# 分割繪圖區域
gs = GridSpec(3, 3)
# 在繪圖區域繪圖
ax1 = plt.subplot(gs[0, :])
ax1.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
ax2 = plt.subplot(gs[1, 0:-1])
ax2.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
ax3 = plt.subplot(gs[2, 0:-1])
ax3.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
ax4 = plt.subplot(gs[1:, 2])
ax4.plot([1, 2, 3, 4, 5], [2, 1, 2, 1, 2])
plt.savefig("img11", dpi=600)
plt.show()