23/07/2019, 12:31

Thư viện Matplotlib – Thư viện Python dùng để vẽ đồ thị

Thư viện 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à thư viện Matplotlib là một trong những giải pháp như vậy cho lập trình viên 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 ...

Thư viện Matplotlib

Thư viện 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à thư viện Matplotlib là một trong những giải pháp như vậy cho lập trình viên 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. 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.

  Sử dụng Python để làm gì? - 3 Ứng dụng chính của Python
  Hướng dẫn back-up dữ liệu bằng Python

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ư Textobjects, 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

Ở đâ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à chúng tôi sẽ làm việc sẽ chỉ ở dạng mảng.Thư viện Matplotlib

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() và ylabel().

Thư viện Matplotlib

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:

Thư viện Matplotlib

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.

Thư viện Matplotlib

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.

Thư viện Matplotlib

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, ncols và index. 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.

Chúng ta sử dụng phương thức suptitle() để tạo một tiêu đề tập trung cho hình:

Thư viện Matplotlib

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):

Thư viện Matplotlib

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ố nrows và ncols 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: figure và axes 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 ý.

Thư viện Matplotlib

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ỳ)

Thư viện Matplotlib

Để 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, chúng tôi 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à awidth 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.

Thư viện Matplotlib

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ó.

Thư viện Matplotlib

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:

Thư viện Matplotlib

Kết luận

Vậy là mình đã giới thiệu về thư viện Matplotlib cho các bạn. Hy vọng bài viết này hữu ích.

Trước khi kết thúc bài viết, mình xin liệt kê các phương thức đã 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.

0