Matplotlib Cơ Bản
Matplotlib Cơ Bản
Matplotlib là một thư viện mạnh mẽ và phổ biến trong Python được sử dụng để tạo các biểu đồ và hình ảnh minh họa dữ liệu. Được phát triển bởi John D. Hunter, Matplotlib cung cấp giao diện linh hoạt cho phép người dùng dễ dàng vẽ các biểu đồ như biểu đồ đường, cột, tròn, scatter và nhiều loại khác.
1. Cách cài đặt Matplotlib
- Bạn có thể gõ lệnh sau trong cmd sau khi tạo môi trường ảo để cài đặt thư viện
Matplotlib
:
1
pip install matplotlib
- Dùng lệnh dưới và chạy trong một cell nếu bạn đang dùng Google Colab, Kaggle Notebook,…:
1
!pip install matplotlib
- Vì
Matplotlib
là một thư viện trong python nên bạn có thể dùngimport
để khai báo:
1
2
import matplotlib
print(matplotlib.__version__)
3.8.0
- Người ta thường dùng từ
plt
để viết tắt chomatplotlib
. Dưới đây là một ví dụ vẽ đường thẳng đơn giản từ hai điểm:
1
2
3
4
5
6
import matplotlib.pyplot as plt
import numpy as np
x = np.array([0,6])
y = np.array([0,250])
plt.plot(x, y)
plt.show()
2. Các hàm cơ bản trong Matplotlib
- Ham
plot
được sử dụng để vẽ các điểm (markers) trong biểu đồ. Mặc định hàm này sẽ nối các điểm bằng một đường thẳng. Hàm này nhận các tham số để xác định các điểm trong biểu đồ, tham số thứ nhất là một mảng chứ tọa độ trục x, tham số thứ hai là một mảng chứa tọa độ trên trục y. - Ví dụ, để vẽ một đường thẳng từ điểm (1,3) đến (8,10), ta cần truyền hai mảng
[1,8]
và[3,10]
vào hàmplot
:
1
2
3
4
5
6
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1,8])
y = np.array([3,10])
plt.plot(x,y)
plt.show()
- Nếu bạn chỉ muốn vẽ điểm, bạn có thể truyền thêm tham số
'o'
vào hàmplot
:
1
2
3
4
5
6
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1,8])
y = np.array([3,10])
plt.plot(x, y, 'o')
plt.show()
- Bạn có thể vẽ đồ thị nhiều điểm, chỉ cần đảm bảo là hai trục có cùng số lượng phần tử là được:
1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([1, 2, 6, 8])
ypoints = np.array([3, 8, 1, 10])
plt.plot(xpoints, ypoints)
plt.show()
- Nếu bạn không truyền trục x vào hàm
plot
thì hàm này sẽ mặc định trục x là 0,1,2,3,… phụ thuộc vào số lượng của mảng y:
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 8, 1, 10, 5, 7])
plt.plot(ypoints)
plt.show()
Markers
- Bạn có thể dùng tham số
marker
để biểu thị cho các điểm. Ví dụ bạn muốn các điểm có hình tròn thì bạn có thể code như sau:
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 8, 1, 10, 5, 7])
plt.plot(ypoints, marker = 'o')
plt.show()
- Hoặc là nếu bạn muốn các điểm có hình dạng như ngôi sao:
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 8, 1, 10, 5, 7])
plt.plot(ypoints, marker = '*')
plt.show()
- Tham khảo bảnh các marker có thể dùng dưới đây:
Marker | Mô tả |
---|---|
'.' | Điểm |
',' | Pixel |
'o' | Hình tròn |
'v' | Tam giác hướng xuống |
'^' | Tam giác hướng lên |
'<' | Tam giác hướng trái |
'>' | Tam giác hướng phải |
'1' | Tam giác nhỏ hướng xuống |
'2' | Tam giác nhỏ hướng lên |
'3' | Tam giác nhỏ hướng trái |
'4' | Tam giác nhỏ hướng phải |
's' | Hình vuông |
'p' | Hình ngũ giác |
'*' | Hình sao |
'h' | Lục giác (kiểu 1) |
'H' | Lục giác (kiểu 2) |
'+' | Dấu cộng |
'x' | Dấu nhân |
'D' | Hình thoi |
'd' | Hình thoi mỏng |
'|' | Đường thẳng đứng |
'_' | Đường thẳng ngang |
'' | Không có marker |
None | Mặc định (không có marker) |
' ' | Không có marker (cách khác) |
'$...$' | Biểu thức LaTeX làm marker (ví dụ: '$\\alpha$' ) |
- Bạn có thể dùng một tham số gọi là
fmt
để chỉ thị 3 thứ: marker, line, color. Tham sốfmt
sẽ có dạngmarker|line|color
, xem ví dụ dưới để hiểu rõ hơn:
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints, 'o:r')
plt.show()
'o'
có nghĩa là marker sẽ có dạng hình tròn,':'
có nghĩa là line sẽ là dạng đường nét đứt,r
có nghĩa là màu đỏ (red). Dưới đây là bảng line và color:
Line Style | Mô tả |
---|---|
'-' | Đường thẳng liền |
'--' | Đường gạch đứt |
'-.' | Đường gạch chấm |
':' | Đường chấm chấm |
'' | Không có đường kẻ |
None | Không có đường kẻ (tương tự) |
Ký hiệu | Màu |
---|---|
'b' | Xanh dương (blue) |
'g' | Xanh lá cây (green) |
'r' | Đỏ (red) |
'c' | Xanh ngọc (cyan) |
'm' | Tím (magenta) |
'y' | Vàng (yellow) |
'k' | Đen (black) |
'w' | Trắng (white) |
- Bạn có thể chỉnh kích thước của marker bằng tham số
markersize
hoặc ngắn ngọn hơn làms
:
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 8, 1, 10])
plt.plot(ypoints, marker = 'o', ms = 20)
plt.show()
Labels
- Bạn có thể dùng hàm
xlabel
vàylabel
để đặt tên cho trục x và trục y:
1
2
3
4
5
6
7
8
9
10
11
import matplotlib.pyplot as plt
import numpy as np
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])
plt.plot(x, y)
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")
plt.show()
- Bạn có thể dùng hàm
title
để đặt tên cho đồ thị:
1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
import matplotlib.pyplot as plt
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])
plt.plot(x, y)
plt.title("Sports Watch Data")
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")
plt.show()
- Bạn còn có thể thay đổi font chữ, loại chữ, màu chữ với tham số
fontdict
trong hàmxlabel
,ylabel
,title
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])
font1 = {'family':'serif','color':'blue','size':20}
font2 = {'family':'serif','color':'darkred','size':15}
plt.title("Sports Watch Data", fontdict = font1)
plt.xlabel("Average Pulse", fontdict = font2)
plt.ylabel("Calorie Burnage", fontdict = font2)
plt.plot(x, y)
plt.show()
- Bạn có thể căn giữa, căn trái, căn phải
title
bằng tham sốloc
:
1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
import matplotlib.pyplot as plt
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])
plt.title("Sports Watch Data", loc = 'left')
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")
plt.plot(x, y)
plt.show()
Subplot
- Với hàm
subplot
, bạn có thể vẽ nhiều đồ thị trong một hình:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import matplotlib.pyplot as plt
import numpy as np
# đồ thị 1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(1, 2, 1) # Hình vẽ chia làm 1 hàng và 2 cột, và đồ thị này sẽ được vẽ ở ô thứ 1
plt.plot(x,y)
# đồ thị 2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(1, 2, 2) # Hình vẽ chia làm 1 hàng và 2 cột, và đồ thị này sẽ được vẽ ở ô thứ 2
plt.plot(x,y)
plt.show()
- Nếu chúng ta muốn vẽ hai hình, một hình trên và một hình dưới thì có thể code như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import matplotlib.pyplot as plt
import numpy as np
#plot 1:
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(2, 1, 1)
plt.plot(x,y)
#plot 2:
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(2, 1, 2)
plt.plot(x,y)
plt.show()
- Bạn có thể dùng hàm
title
sau mỗi lần dùngplot
để viết title cho từng hình, đồng thời bạn cũng có thể dùng hàmsuptitle
để làm title cho toàn thể:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import matplotlib.pyplot as plt
import numpy as np
#plot 1:
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(1, 2, 1)
plt.plot(x,y)
plt.title("SALES")
#plot 2:
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("INCOME")
plt.suptitle("MY SHOP")
plt.show()
- Chúng ta có thể vẽ nhiều đường trên một đồ thị như sau:
1
2
3
4
5
6
7
8
9
10
import matplotlib.pyplot as plt
import numpy as np
y1 = np.array([3, 8, 1, 10])
y2 = np.array([6, 2, 7, 11])
plt.plot(y1)
plt.plot(y2)
plt.show()
Scatter
- Bạn có thể dùng hàm
scatter
để biểu diễn các điểm:
1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)
plt.show()
- Xem thêm nhiều thứ hay ho về
scatter
tại: w3school (Do tôi cảm thấy mấy cái sau không có nhiều ích lợi lắm nên tôi sẽ không trình bày)
Bars
- Để tạo biểu đồ cột, bạn có thể sử dụng hàm
bar
:
1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np
x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])
plt.bar(x,y)
plt.show()
- Để vẽ biểu đồ cột ngang bạn có thể dùng hàm
barh
:
1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np
x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])
plt.barh(x, y)
plt.show()
Histogram
- Histogram là dạng biểu đồ thể hiện tần xuất. Nếu bạn hỏi chiều cao của 250 người, bạn có thể có biểu đồ dưới đây:
- Nhìn vào biểu đồ, bạn có thể ước lượng những điều sau:
- 2 người cao từ 140 đến 145cm
- 5 người cao từ 145 đến 150cm
- 15 người cao từ 151 đến 156cm
- 31 người cao từ 157 đến 162cm
- 46 người cao từ 163 đến 168cm
- 53 người cao từ 168 đến 173cm
- 45 người cao từ 173 đến 178cm
- 28 người cao từ 179 đến 184cm
- 21 người cao từ 185 đến 190 cm
- 4 người cao từ 190 đến 195cm
- Để vẽ histogram, bạn có thể dùng hàm
hist
như sau:
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
x = np.random.normal(170, 10, 250)
plt.hist(x)
plt.show()
Pie Charts
- Để vẽ biểu đồ tròn, bạn có thể dùng hàm
pie
:
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
y = np.array([35, 25, 25, 15])
plt.pie(y)
plt.show()
- Vì tôi cũng ít dùng biểu đồ này và cũng lười viết tiếp nên hãy tham khảo thêm tại: w3school
3. Tổng kết.
Matplotlib là công cụ mạnh mẽ giúp trực quan hóa dữ liệu trong Python, từ phân tích cơ bản đến ứng dụng trong AI như minh họa quá trình huấn luyện mô hình và đánh giá hiệu suất. Nắm vững Matplotlib là nền tảng để khai thác dữ liệu hiệu quả.
This post is licensed under CC BY 4.0 by the author.