Hướng dẫn matplotlib python là gì

Matplotlib là một thư viện giống như GNUplot. Ưu điểm chính so với GNUplot đó là Matplotlib là một module của Python. Do mức độ phổ biến của python ngày càng tăng, nên matplotlib cũng nhận được sự quan tâm tương tự.

Một lý do khác cho sự hấp dẫn của Matplotlib nằm ở chỗ nó được xem là một sự lựa chọn hoàn hảo thay thế cho MATLAB, nếu nó được sử dụng kết hợp với Numpy và Scipy. Trong khi MATLAB đắt đỏ và mã nguồn đóng, Matplotlib lại miễn phí và mã nguồn mở. Nó cũng là ngôn ngữ hướng đối tượng. Hơn nữa, nó có thể được sử dụng với bộ công cụ GUI mục đích chung như wxPython, Qt, và GTK+. Cũng có một thủ tục "pylab", được thiết kế để giống với MATLAB. Điều này có thể làm cho những người quen sử dụng MATLAB dễ dàng chuyển sang dùng matplotlib.

Matplotlib có thể được sử dụng để tạo ra những figures đủ chất lượng cho một loạt các định dạng hardcopy và môi trường tương tác trên nền tảng.

Một đặc điểm khác của matplotlib là tốc độ lĩnh hội, có nghĩa là người dùng thường đạt được tiến bộ nhanh chóng sau khi bắt đầu. Các trang web chính thức có thể nói những điều sau đây: "matplotlib cố gắng làm những điều khó khăn, phức tạp trở lên dễ dàng nhất có thể. Bạn có thể tạo ra các hình vẽ, histograms, phổ, biểu đồ thanh, errorcharts, scatterplots, vv, với chỉ một vài dòng mã."

Matplotlib có một số interfaces để tương tác với thư viện matplotlib: Object-Oriented API, The Scripting Interface (pyplot), The MATLAB Interface (pylab). Pyplot và pylab đều là lightweight interfaces, tuy nhiên Pyplot cung cấp một giao diện thủ tục các thư viện vẽ hướng đối tượng trong matplotlib. Các lệnh vẽ của nó được thiết kế tương tự với Matlab cả về cách đặt tên và ý nghĩa các đối số. Cách thiết kế này đã giúp cho việc sử dụng pyplot dễ dàng và dễ hiểu hơn vì vậy trong các bài viết về Matplotlib, tôi sẽ sử dụng giao diện pyplot thay vì hai giao diện còn lại. Nếu chúng ta muốn can thiệp sâu hơn, với nhiều tùy chỉnh hơn thì Object-Oriented API sẽ là lựa chọn thích hợp.

Import giao diện pyplot (giao diện tôi sẽ sử dụng trong hướng dẫn)


>>> import matplotlib.pyplot as plt

>>>

Import giao diện pylab

>>> from pylab import *

>>>

Import giao diện Object-Oriented API

>>> from matplotlib.backends.backend_agg import FigureCanvasAgg

>>> from matplotlib.figure import Figure

Chúng ta sẽ bắt đầu với một vài biểu đồ đơn giản. Một đồ thị là đồ thị hai hoặc ba chiều thể hiện mối quan hệ qua các điểm, đường cong, hoặc các bars.

Chú ý:

Nếu ta sử dụng ipython, ta cần thêm “%matplotlib inline” trước khi vẽ.

Để hiển thị hình vẽ (plot) ta sử dụng plt.show()

Line plot

>>> from pylab import *

>>>
0

>>> import matplotlib.pyplot as plt

>>> import numpy as np

>>> plt.plot(np.random.randint(20,size=100))

[]

>>> plt.show()

Hướng dẫn matplotlib python là gì

Scatter plot

Sinh ngẫu nhiên 1000 điểm và biểu diễn chúng trên đồ thị bằng đồ thị rời rạc (Scatter).

Import thư viện và sinh dữ liệu:

>>> import matplotlib.pyplot as plt

>>> import numpy as np

>>> x = np.random.randn(1000)

>>> y = np.random.randn(1000)

Sử dụng plot() để vẽ đồ thị rời rạc.

>>> plt.plot(x,y,"ob")

[]

>>> plt.show()

 Hoặc ta cũng có thể sử dụng scatter()

>>> plt.scatter(x,y)



>>> plt.show()

Hướng dẫn matplotlib python là gì

Bar Chart

Vẽ biểu đồ thanh (bar chart) từ danh ngẫu nhiên.

>>> y = [3, 10, 7, 5, 3, 4.5, 6, 8.1]

>>> N = len(y)

>>> x = range(N)

>>> width = 1/1.5

>>> plt.bar(x, y, width, color="blue")



>>> plt.show()

Hướng dẫn matplotlib python là gì

Kết Luận

Qua bài học chúng ta đã được giới thiệu về tầm quan trọng của matplotlib và ba interfaces mà matplotlib cung cấp để tương tác với nó.  Đồng thời, chúng ta cũng làm quen với một số loại biểu đồ đơn giản như biểu đồ đường, biểu đồ rời rạc và biểu đồ thanh. Chúng ta sẽ đi sâu hơn trong các bài học tiếp theo.

Vẽ biểu đồ là một trong những kỹ năng cần thiết và rất quan trọng đặc biệt là những bạn muốn phát triển sự nghiệp trong lĩnh vực Data Analyst hay Data Science. 

Hôm nay mình sẽ giới thiệu với các bạn một thư viện phổ biến nhất trong Python là Matplotlib giúp các bạn có thể trực quan hóa dữ liệu của mình. Mặc dù hiện nay có khá nhiều thư viện cũng được đánh giá tốt như Seaborn, Hiplot (của facebook) trong python hay ggplot trong R; Matplotlib tuy cũ nhưng vẫn được sử dụng rộng rãi hơn cả cho mục đích Data Visualization.

Nếu bạn có thời gian và thực sự muốn học sâu hơn về matplotlib hãy đọc cuốn sách này. Còn nếu bạn cần một hướng dẫn nhanh, nhiệm vụ đó mình sẽ làm ngay sau đây :D

Nội dung

Install & Import

1. Tạo biểu đồ đơn giản

2. Vẽ nhiều đối tượng trong cùng một biểu đồ

3. Thay đổi kích thước của biểu đồ 

4. Vẽ hai biểu đồ cạnh nhau

5. Vẽ trên nhiều biểu đồ sử dụng vòng lặp 

Tạm kết

Install & Import

Để sử dụng thư viện Matplotlib, bước đầu tiên sau khi thiết lập môi trường Python là chúng ta phải cài đặt package phải không nào. Sử dụng pip install matplotlib để cài đặt version mới nhất.

Sau đó ta import thư viện bằng dòng code : 

import matplotlib.pyplot as plt

Dưới đây là những hướng dẫn cơ bản để vẽ biểu đồ với Matplotlib.

1. Tạo biểu đồ đơn giản

Sau đây ta vẽ một biểu đồ đơn giản với phương thức plot(), mặc định nó sẽ vẽ biểu đồ đường.

Với các tham số tối thiểu là list các tọa độ x, list tọa độ y (lưu ý 2 list này phải có độ dài bằng nhau).

Ví dụ minh họa như sau:

Hướng dẫn matplotlib python là gì

Để thay đổi một chút, ta có thể thêm tham số về định dạng vào 

Chẳng hạn như :

- tham số màu :  r - red, g -green, b - blue, y - yellow, …

- định dạng đường :  - (đường thẳng), -- (đường nét đứt), nếu không truyền tham số là không vẽ đường.

- định dạng đỉnh :  * (đỉnh hình bông tuyết), D (đỉnh hình thoi), s (đỉnh hình vuông), go (chấm tròn), ...

Ví dụ : Ở ví dụ này mình thêm tham số b tức là màu blue, D tức là đỉnh hình thoi và -- tức là cạnh nét đứt.

Hướng dẫn matplotlib python là gì

2. Vẽ nhiều đối tượng trong cùng một biểu đồ

Ta sẽ thêm title cho biểu đồ, title cho trục tọa độ và thêm chú thích, ví dụ như sau:

Hướng dẫn matplotlib python là gì

Đoạn code trong hình ta thấy : 

- tham số label trong hàm plt.plot() là để đặt tên cho một điểm, tên này sẽ xuất hiện trong chú thích.

- plt.xlabel hay plt.ylabel là để đặt tên cho trục x và trục y.

- plt.title là để đặt tên cho biểu đồ

- plt.legend sẽ đi tìm các thành phần chứa tham số label và đưa vào chú thích 

3. Thay đổi kích thước của biểu đồ 

Ta sử dụng phương thức figure() để thay đổi kích thước của biểu đồ, tham số truyền vào là figsize.

Ví dụ được mô tả như dưới đây:

Hướng dẫn matplotlib python là gì

Ở ví dụ trên tham số truyền vào là figsize=(10,7) trong đó 10 là tỉ lệ độ dài trục ngang (x) và 7 là tỉ lệ độ dài trục dọc (y) 

Ta cũng thấy có plt.xlim và plt.ylim. Hai phương thức này dùng để xác định hệ số chia trên trục tương ứng.

4. Vẽ hai biểu đồ cạnh nhau 

Hướng dẫn matplotlib python là gì

Đầu tiên ta sử dụng phương thức subplots() để tạo ra 2 biểu đồ. Sử dụng subplots() các đối tượng Axes sẽ được trả về. Sau đó bạn có thể set các thuộc tính của từng đối tượng này sử dụng ax1.set hay ax2.set như trên (mỗi đối tượng axes định nghĩa cho một biểu đồ)

Tham số (1,2) trong hàm subplots có thể hiểu là "một hàng, hai cột" - tương ứng bạn sẽ vẽ ra 2 biểu đồ cạnh nhau. Nếu chẳng hạn bạn thay (1,2) bằng (2,2), bạn sẽ được 4 biểu đồ. 

Tham số dpi là độ phân giải của hình vẽ.

Tham số sharey = True cho phép chia sẻ thuộc tính giữa 2 trục x và y.

5. Vẽ trên nhiều biểu đồ sử dụng vòng lặp 

Hướng dẫn matplotlib python là gì

Đây là một kỹ thuật khá hữu ích, nhất là khi bạn muốn vẽ biểu đồ từ một cơ sở dữ liệu hay file dữ liệu được.

Đầu tiên bạn tạo một subplot với số biểu đồ mà bạn muốn vẽ lên, sau đó các đối tượng Axes được tạo ra và bạn sẽ sử dụng các đối tượng này trong vòng lặp for để đưa dữ liệu vào các biểu đồ tương ứng. 

Tạm kết

Trên đây là một số kỹ thuật cơ bản để bạn bắt đầu tiếp cận với việc trực quan hóa dữ liệu (Data Visualization) sử dụng Matplotlib. Với mục đích giúp các bạn tiếp cận dễ dàng hơn nên ở phần này mình sẽ trình bày những kiến thức cơ bản nhất. Ở phần tiếp theo mình sẽ giới thiệu với các bạn những kỹ năng nâng cao hơn giúp bạn trở nên master hơn với matplotlib và bạn có thể làm những thứ hay ho hơn như dưới đây :D.