- vừa được xem lúc

Giới thiệu về Matplotlib (một thư viện rất hữu ích của Python dùng để vẽ đồ thị)

0 0 24

Người đăng: Nguyen Van Hoang

Theo Viblo Asia

Matplotlib

Để thực hiện các suy luận thống kê cần thiết, cần phải trực quan hóa dữ liệu của bạn và Matplotlib là một trong những giải pháp như vậy cho người dùng Python. Nó là một thư viện vẽ đồ thị rất mạnh mẽ hữu ích cho những người làm việc với Python và NumPy. Module được sử dụng nhiều nhất của Matplotib là Pyplot cung cấp giao diện như MATLAB nhưng thay vào đó, nó sử dụng Python và nó là nguồn mở.

Để cài đặt Matplotlib nếu bạn có Anaconda chỉ cần gõ conda install matplotlib hoặc sử dụng tools pip pip install matplotlib

Khái niệm chung

Một Matplotlib figure có thể được phân loại thành nhiều phần như dưới đây:

  • Figure: Như một cái cửa sổ chứa tất cả những gì bạn sẽ vẽ trên đó.
  • Axes: Thành phần chính của một figure là các axes (những khung nhỏ hơn để vẽ hình lên đó). Một figure có thể chứa một hoặc nhiều axes. Nói cách khác, figure chỉ là khung chứa, chính các axes mới thật sự là nơi các hình vẽ được vẽ lên.
  • Axis: Chúng là dòng số giống như các đối tượng và đảm nhiệm việc tạo các giới hạn biểu đồ.
  • Artist: Mọi thứ mà bạn có thể nhìn thấy trên figure là một artist như Text objects, Line2D objects, collection objects. Hầu hết các Artists được gắn với Axes.

Bắt đầu với Pyplot

Pyplot là một module của Matplotlib cung cấp các hàm đơn giản để thêm các thành phần plot như lines, images, text, v.v. vào các axes trong figure.

Tạo một biểu đồ đơn giản

import matplotlib.pyplot as plt
import numpy as np

Ở đây chúng ta import Matplotlib’s Pyplot module và thư viện Numpy vì hầu hết các dữ liệu mà ta sẽ làm việc sẽ chỉ ở dạng mảng.

Chúng ta chuyển hai mảng làm đối số đầu vào cho phương thức plot() và sử dụng phương thức show() để gọi biểu đồ được yêu cầu. Ở đây lưu ý rằng mảng đầu tiên xuất hiện trên trục x và mảng thứ hai xuất hiện trên trục y của biểu đồ. Bây giờ, biểu đồ đầu tiên của chúng ta đã sẵn sàng, chúng ta hãy thêm tiêu đề và đặt tên trục x và trục y bằng cách sử dụng các phương thức title(), xlabel()ylabel().

Chúng ta cũng có thể chỉ định kích thước của hình bằng cách sử dụng phương thức figure() và truyền các giá trị dưới dạng một tuple về độ dài của các hàng và cột cho đối số figsize

Với mỗi đối số X và Y, bạn cũng có thể chuyển một đối số thứ ba tùy chọn dưới dạng một chuỗi cho biết màu sắc và loại đường của biểu đồ. Định dạng mặc định là b- có nghĩa là một đường màu xanh lam đặc. Trong hình dưới đây, mình sử dụng go có nghĩa là vòng tròn màu xanh lá cây. Tương tự như vậy, chúng ta có thể thực hiện nhiều kết hợp như vậy để định dạng biểu đồ của mình.

Chúng ta cũng có thể vẽ nhiều bộ dữ liệu bằng cách chuyển vào nhiều bộ đối số của trục X và Y trong phương thức plot() như bên dưới.

Nhiều biểu đồ trong 1 figure

Chúng ta có thể sử dụng phương thức subplot() để thêm nhiều plots trong một hình. Trong hình ảnh bên dưới, mình đã sử dụng phương pháp này để phân tách hai biểu đồ mà đã vẽ trên cùng một trục trong ví dụ trước. Phương thức subplot() có ba đối số: nrows, ncolsindex. Chúng chỉ ra số lượng hàng, số cột và số index của sub-plot. Ví dụ, mình muốn tạo hai sub-plot trong một hình sao cho nó nằm trên một hàng và trên hai cột và do đó ta chuyển các đối số (1,2,1) và (1,2,2) trong phương thức subplot(). Lưu ý rằng ta đã sử dụng riêng phương thức title() cho cả các subplots. Ta sử dụng phương thức suptitle() để tạo một tiêu đề tập trung cho hình.

Nếu ta muốn các sub-plots thành hai hàng và một cột, chúng ta có thể truyền các đối số (2,1,1) và (2,1,2)

Cách tạo ra subplots trên đây trở nên hơi tẻ nhạt khi chúng ta muốn có nhiều subplots trong hình. Một cách thuận tiện hơn là sử dụng phương thức subpltots(). Lưu ý sự khác biệt của các giá trị trong cả hai phương thức. Phương thức này lấy hai đối số nrowsncols làm số lượng hàng và số cột tương ứng. Phương thức này tạo ra hai đối tượng: figureaxes mà chúng ta lưu trữ trong các biến fig và ax có thể được sử dụng để thay đổi các thuộc tính mức figure và axes tương ứng. Lưu ý rằng các tên biến này được chọn tùy ý.

Tạo các loại biểu đồ khác nhau với Pyplot

1. Biểu đồ thanh

Biểu đồ thanh là một trong những loại biểu đồ phổ biến nhất và được sử dụng để hiển thị dữ liệu được liên kết với các biến phân loại. Pyplot cung cấp một phương thức bar() để tạo các biểu đồ thanh có các đối số: biến phân loại, giá trị và màu sắc của chúng (nếu bạn muốn chỉ định bất kỳ)

Để tạo biểu đồ thanh ngang sử dụng phương thức barh() Ngoài ra, chúng ta có thể truyền đối số (với giá trị của nó) xerr or yerr (trong trường hợp biểu đồ thanh dọc ở trên) để mô tả phương sai trong dữ liệu của chúng ta như sau:

Để tạo các biểu đồ thanh xếp chồng theo chiều ngang, ta sử dụng phương thức bar() hai lần và chuyển các đối số trong đó ta đề cập đến index và width của biểu đồ thanh để xếp chúng theo chiều ngang. Ngoài ra, chú ý việc sử dụng hai phương thức legend() được sử dụng để hiển thị chú giải của biểu đồ và xticks() để gắn nhãn trục x dựa trên vị trí của các thanh.

Tương tự, để xếp theo chiều dọc các biểu đồ thanh với nhau, chúng ta có thể sử dụng đối số bottom và đề cập đến biểu đồ thanh mà chúng ta muốn xếp chồng bên dưới làm giá trị của nó.

2. Biểu đồ tròn

Một loại biểu đồ cơ bản nữa là biểu đồ Pie có thể được tạo bằng phương thức pie() Chúng ta cũng có thể chuyển các đối số để tùy chỉnh biểu đồ Pie của mình để hiển thị shadow, explode một phần của nó, nghiêng nó theo một góc như sau:

3. Histogram Histogram là một loại biểu đồ rất phổ biến khi chúng ta xem xét dữ liệu như chiều cao và cân nặng, giá cổ phiếu, thời gian chờ đợi của một khách hàng, v.v ... liên tục trong tự nhiên. Histogram's data được vẽ trong một phạm vi so với tần số của nó. Histograms là các biểu đồ xuất hiện rất phổ biến trong xác suất và thống kê và tạo cơ sở cho các distributions khác nhau như normal -distribution, t-distribution, v.v. Trong ví dụ sau, chúng ta tạo dữ liệu liên tục ngẫu nhiên gồm 1000 entries và vẽ biểu đồ theo tần số của nó với dữ liệu chia thành 10 tầng bằng nhau. Mình đã sử dụng phương thức random.randn() của NumPy's để tạo dữ liệu với các thuộc tính của standard normal distribution, nghĩa là = 0 và độ lệch chuẩn = 1 và do đó biểu đồ trông giống như một đường cong normal distribution.

4. Sơ đồ phân tán và 3 chiều

Các biểu đồ phân tán là các biểu đồ được sử dụng rộng rãi, đặc biệt là chúng có ích trong việc hình dung một vấn đề về hồi quy. Trong ví dụ sau, cung cấp dữ liệu được tạo tùy ý về chiều cao và cân nặng và vẽ chúng với nhau. Mình đã sử dụng các phương thức xlim()ylim() để đặt giới hạn của trục X và trục Y tương ứng.

Sự phân tán ở trên cũng có thể được hình dung trong ba chiều. Để sử dụng chức năng này, trước tiên ta cần import module mplot3d như sau:

from mpl_toolkits import mplot3d

Khi module được nhập, một trục ba chiều được tạo bằng cách chuyển từ khóa projection='3d' sang phương thức axes()của module Pyplot. Khi đối tượng được tạo, chúng ta chuyển chiều cao và trọng số của đối số cho phương thức scatter3D().

Chúng ta cũng có thể tạo các biểu đồ 3 chiều của các loại khác như biểu đồ đường, bề mặt, khung lưới, đường viền, v.v. Ví dụ trên ở dạng biểu đồ đường đơn giản như sau: Ở đây thay vì scatter3D() chúng ta sử dụng phương thức plot3D()

Kết luận:

Hy vọng bài viết này hữu ích cho bạn. Trước khi mình kết thúc bài viết ở đây là danh sách tất cả các phương thức mà chúng đã xuất hiên.

  • plot(x-axis values, y-axis values) —đồ thị đường đơn giản với các giá trị trục x so với giá trị trục y.
  • show() - hiển thị biểu đồ
  • title(“string”) - đặt tiêu đề
  • xlabel(“string”) - đặt nhãn cho trục x
  • ylabel(“string”) - đặt nhãn cho trục y
  • figure() - dùng để control các thuộc tính của mức hình
  • subplot(nrows, ncols, index) - thêm một subplot vào figure hiện tại
  • suptitle(“string”) - thêm một tiêu đề chung vào hình
  • subplots(nrows, ncols, figsize) - một cách thuận tiện để tạo các subplots. Nó trả về một tuple của figure và số lượng axes
  • set_title(“string”) - dùng để đặt tiêu đề cho các ô con
  • bar(categorical variables, values, color) - được sử dụng để tạo đồ thị thanh dọc
  • barh(categorical variables, values, color) - dùng để tạo biểu đồ thanh ngang
  • legend(loc) - dùng để tạo chú thích của đồ thị
  • xticks(index, categorical variables) - get hoặc set vị trí đánh dấu hiện tại và nhãn của trục x
  • pie(value, categorical variables) - dùng để tạo biểu đồ hình tròn
  • hist(values, number of bins) - được sử dụng để tạo histogram
  • xlim(start value, end value) - được sử dụng để đặt giới hạn giá trị của trục x
  • ylim(start value, end value) - được sử dụng để đặt giới hạn giá trị của trục y
  • scatter(x-axis values, y-axis values) - vẽ sơ đồ phân tán với các giá trị trục x so với giá trị trục y
  • axes() - thêm một axes vào hình hiện tại
  • set_xlabel(“string”) - được sử dụng đễ set nhãn x cho plot được chỉ định
  • set_ylabel(“string”) - được sử dụng đễ set nhãn y cho plot được chỉ định
  • scatter3D(x-axis values, y-axis values) - vẽ sơ đồ phân tán ba chiều với các giá trị trục x so với giá trị trục y
  • plot3D(x-axis values, y-axis values) - vẽ đồ thị đường ba chiều với các giá trị trục x so với giá trị trục y

Tài liệu tham khảo

Bài viết được dịch từ nguồn: Matplotlib Tutorial

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 499

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 701

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 335

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 420

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414