Hướng dẫn plt savefig python - plt savefig python

[Matplotlib] (https://matplotlib.org/ là một thư viện âm mưu hai chiều mạnh mẽ cho ngôn ngữ Python.

Trong hầu hết các trường hợp, matplotlib sẽ chỉ cần xuất biểu đồ vào chế độ xem của bạn khi phương thức

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
7 được gọi, nhưng chúng tôi sẽ khám phá ngắn gọn cách lưu tạo ra matplotlib vào một tệp thực tế trên đĩa.

Sử dụng matplotlib

Mặc dù danh sách tính năng của matplotlib là gần như vô hạn, chúng tôi sẽ nhanh chóng đi qua cách sử dụng thư viện để tạo biểu đồ cơ bản cho mục đích thử nghiệm của riêng bạn.

Giống như tất cả các thư viện Python, bạn sẽ cần bắt đầu bằng cách cài đặt matplotlib. Chúng tôi đã giành chiến thắng trong quá trình cài đặt ở đây, nhưng có rất nhiều thông tin trong tài liệu chính thức.

Sau khi cài đặt, nhập thư viện

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
8. Bạn có thể cũng muốn nhập thư viện phụ
In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
9, đó là những gì bạn thường sử dụng để tạo biểu đồ và âm mưu của mình khi sử dụng matplotlib.

In [1]: import matplotlib
import matplotlib.pyplot as plt

Bây giờ để tạo và hiển thị một biểu đồ đơn giản, trước tiên chúng tôi sẽ sử dụng phương thức

In [3]: plt.xlabel('Months')
plt.ylabel('Books Read')
0 và chuyển trong một vài mảng số cho các giá trị của chúng tôi. Ví dụ này, chúng tôi sẽ vẽ số lượng sách đọc trong khoảng vài tháng.

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])

Chúng tôi cũng có thể thêm một vài nhãn trục:

In [3]: plt.xlabel('Months')
plt.ylabel('Books Read')

Cuối cùng, chúng ta có thể hiển thị biểu đồ bằng cách gọi

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
7:

Phương thức SaveFig

Với một biểu đồ đơn giản dưới vành đai của chúng tôi, bây giờ chúng tôi có thể chọn xuất biểu đồ vào một tệp thay vì hiển thị nó (hoặc cả hai nếu muốn), bằng cách sử dụng phương thức

In [3]: plt.xlabel('Months')
plt.ylabel('Books Read')
2.

In [5]: plt.savefig('books_read.png')

Phương thức

In [3]: plt.xlabel('Months')
plt.ylabel('Books Read')
2 yêu cầu tên tệp được chỉ định là đối số đầu tiên. Tên tệp này có thể là một đường dẫn đầy đủ và như đã thấy ở trên, cũng có thể bao gồm một phần mở rộng tệp cụ thể nếu muốn. Nếu không có tiện ích mở rộng nào được cung cấp, giá trị cấu hình của
In [3]: plt.xlabel('Months')
plt.ylabel('Books Read')
4 được sử dụng thay thế.

Tùy chọn SaveFig bổ sung

Ngoài chức năng cơ bản là lưu biểu đồ vào một tệp,

In [3]: plt.xlabel('Months')
plt.ylabel('Books Read')
2 còn có một số đối số tùy chọn hữu ích.

  • In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    6 có thể được sử dụng để đặt độ phân giải của tệp thành giá trị số.
  • In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    7 có thể được đặt thành
    In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    8, khiến nền của biểu đồ trong suốt.
  • In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    9 có thể được đặt để thay đổi kích thước của hộp giới hạn (khoảng trắng) xung quanh hình ảnh đầu ra. Trong hầu hết các trường hợp, nếu không có hộp giới hạn nào mong muốn, sử dụng
    In [5]: plt.savefig('books_read.png')
    
    0 là lý tưởng.
  • Nếu
    In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    9 được đặt thành
    In [5]: plt.savefig('books_read.png')
    
    2, thì tùy chọn
    In [5]: plt.savefig('books_read.png')
    
    3 chỉ định lượng đệm xung quanh hình ảnh.

Có một số tùy chọn bổ sung cho các dịp cụ thể, nhưng nhìn chung, điều này sẽ giúp bạn bắt đầu với việc dễ dàng tạo ra các đầu ra tệp hình ảnh từ các biểu đồ matplotlib của bạn.

Sẽ rất hữu ích nếu bạn có ý tưởng về giá trị của màu sắc. Ta có thể làm điều đó bằng cách thêm các thanh màu.

1. Tổng quan 

Thư viện Pillow hỗ trợ tải dữ liệu hình ảnh. Về cơ bản, Matplotlib chỉ hỗ trợ hình ảnh PNG. Các lệnh hiển thị bên dưới sẽ trở lại trên Pillow nếu quá trình đọc gốc không thành công.

Đó là hình ảnh PNG RGB 24 bit (8 bit cho mỗi R, G, B). Tùy thuộc vào nơi bạn lấy dữ liệu của mình, các loại hình ảnh khác mà bạn rất có thể gặp phải là hình ảnh RGBA, cho phép tạo độ trong suốt hoặc hình ảnh thang độ xám (độ sáng) đơn kênh. Bạn có thể nhấp chuột phải vào nó và chọn "Lưu hình ảnh thành" để tải xuống máy tính

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
img = mpimg.imread('mtplogo.png')

Giả sử rằng hình ảnh sau có tên là mtplogo.png có trong thư mục làm việc hiện tại

Bất kỳ mảng nào chứa dữ liệu hình ảnh đều có thể được lưu vào tệp đĩa bằng cách thực thi hàm imsave (). Tại đây, một phiên bản được lật theo chiều dọc của tệp png gốc được lưu bằng cách đặt tham số gốc là 'lower'.

plt.imsave("logo.png", img, cmap = 'gray', origin = 'lower')

Để vẽ hình ảnh trên trình xem Matplotlib, sử dụng hàm imshow ().

2. Ví dụ :

Nếu sử dụng IPython Notebook, bạn cần thêm dòng sau :

In [1]: %matplotlib inline

Điều này sẽ bật tính năng vẽ nội tuyến, nơi đồ họa plot sẽ xuất hiện trong notebook. Điều này có ý nghĩa quan trọng đối với khả năng tương tác. Đối với biểu đồ nội tuyến, các lệnh trong ô bên dưới ô xuất ra một biểu đồ sẽ không ảnh hưởng đến biểu đồ. Ví dụ: không thể thay đổi bản đồ màu từ các ô bên dưới ô tạo ra một biểu đồ. Tuy nhiên, đối với các phần mềm phụ trợ khác, chẳng hạn như Qt5, mở một cửa sổ riêng biệt, các ô bên dưới các plot sẽ thay đổi - nó là một đối tượng trực tiếp trong bộ nhớ.

Hướng dẫn này sẽ sử dụng giao diện vẽ đồ thị kiểu mệnh lệnh của matplotlib, pyplot. Giao diện này duy trì trạng thái chung và rất hữu ích để nhanh chóng và dễ dàng thử nghiệm với các cài đặt plot khác nhau. Lựa chọn thay thế là giao diện hướng đối tượng, giao diện này cũng rất mạnh và thường phù hợp hơn cho việc phát triển ứng dụng lớn. Nếu bạn muốn tìm hiểu về giao diện hướng đối tượng(IDE). Bây giờ, ta cùng xem qua các ví dụ :

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

Thư viện Pillow hỗ trợ tải dữ liệu hình ảnh. Về cơ bản, Matplotlib chỉ hỗ trợ hình ảnh PNG. Các lệnh hiển thị bên dưới sẽ trở lại trên Pillow nếu quá trình đọc gốc không thành công.

Đó là hình ảnh PNG RGB 24 bit (8 bit cho mỗi R, G, B). Tùy thuộc vào nơi bạn lấy dữ liệu của mình, các loại hình ảnh khác mà bạn rất có thể gặp phải là hình ảnh RGBA, cho phép tạo độ trong suốt hoặc hình ảnh thang độ xám (độ sáng) đơn kênh. Bạn có thể nhấp chuột phải vào nó và chọn "Lưu hình ảnh thành" để tải xuống máy tính

img = mpimg.imread('../../doc/_static/stinkbug.png')
print(img)

Kết quả như sau :

[[[0.40784314 0.40784314 0.40784314]
  [0.40784314 0.40784314 0.40784314]
  [0.40784314 0.40784314 0.40784314]
  ...
  [0.42745098 0.42745098 0.42745098]
  [0.42745098 0.42745098 0.42745098]
  [0.42745098 0.42745098 0.42745098]]

 [[0.4117647  0.4117647  0.4117647 ]
  [0.4117647  0.4117647  0.4117647 ]
  [0.4117647  0.4117647  0.4117647 ]
  ...
  [0.42745098 0.42745098 0.42745098]
  [0.42745098 0.42745098 0.42745098]
  [0.42745098 0.42745098 0.42745098]]

 [[0.41960785 0.41960785 0.41960785]
  [0.41568628 0.41568628 0.41568628]
  [0.41568628 0.41568628 0.41568628]
  ...
  [0.43137255 0.43137255 0.43137255]
  [0.43137255 0.43137255 0.43137255]
  [0.43137255 0.43137255 0.43137255]]

 ...

 [[0.4392157  0.4392157  0.4392157 ]
  [0.43529412 0.43529412 0.43529412]
  [0.43137255 0.43137255 0.43137255]
  ...
  [0.45490196 0.45490196 0.45490196]
  [0.4509804  0.4509804  0.4509804 ]
  [0.4509804  0.4509804  0.4509804 ]]

 [[0.44313726 0.44313726 0.44313726]
  [0.44313726 0.44313726 0.44313726]
  [0.4392157  0.4392157  0.4392157 ]
  ...
  [0.4509804  0.4509804  0.4509804 ]
  [0.44705883 0.44705883 0.44705883]
  [0.44705883 0.44705883 0.44705883]]

 [[0.44313726 0.44313726 0.44313726]
  [0.4509804  0.4509804  0.4509804 ]
  [0.4509804  0.4509804  0.4509804 ]
  ...
  [0.44705883 0.44705883 0.44705883]
  [0.44705883 0.44705883 0.44705883]
  [0.44313726 0.44313726 0.44313726]]]

Show ảnh :

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
0

Áp dụng lược đồ giả màu cho các biểu đồ hình ảnh

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
1

Kết quả :

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
2

Bây giờ, với hình ảnh có độ sáng (2D, không màu), bản đồ màu mặc định (hay còn gọi là bảng tra cứu, LUT), được áp dụng. Mặc định được gọi là viridis. Có rất nhiều loại khác để lựa chọn.

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
3

Kết quả :

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
4

Bây giờ, với hình ảnh có độ sáng (2D, không màu), bản đồ màu mặc định (hay còn gọi là bảng tra cứu, LUT), được áp dụng. Mặc định được gọi là viridis. Có rất nhiều loại khác để lựa chọn.

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
5

Lưu ý rằng bạn cũng có thể thay đổi bản đồ màu trên các plot hiện có bằng cách sử dụng phương thức set_cmap ():

Tham chiếu thang màu :

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
6