Hướng dẫn how to save a plot in python as jpg - cách lưu một cốt truyện trong python dưới dạng jpg

[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])
2 đượ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])
3. 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])
4, đó 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 [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
5 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])
2:

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 [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
7.

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

Phương thức

In [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
7 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 [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
9 đượ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 [2]: plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
7 còn có một số đối số tùy chọn hữu ích.

  • In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    1 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')
    
    2 có thể được đặt thành
    In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    3, khiến nền của biểu đồ trong suốt.
  • In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    4 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 [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    5 là lý tưởng.
  • Nếu
    In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    4 được đặt thành
    In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    7, thì tùy chọn
    In [3]: plt.xlabel('Months')
    plt.ylabel('Books Read')
    
    8 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.

Tôi đang sử dụng matplotlib (trong pylab) để hiển thị số liệu. Và tôi muốn lưu chúng ở định dạng .jpg. Khi tôi chỉ cần sử dụng lệnh SaveFig với tiện ích mở rộng JPG này, hãy trả về:

ValueError: Format "jpg" is not supported.

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

Có cách nào để thực hiện điều này không?

Hỏi ngày 11 tháng 1 năm 2012 lúc 21:36Jan 11, 2012 at 21:36

3

Bạn có thể lưu một hình ảnh dưới dạng 'PNG' và sử dụng Thư viện hình ảnh Python (PIL) để chuyển đổi tệp này thành 'jpg':

import Image
import matplotlib.pyplot as plt

plt.plot(range(10))
plt.savefig('testplot.png')
Image.open('testplot.png').save('testplot.jpg','JPEG')

Bản gốc:

Hướng dẫn how to save a plot in python as jpg - cách lưu một cốt truyện trong python dưới dạng jpg

Hình ảnh JPEG:

Hướng dẫn how to save a plot in python as jpg - cách lưu một cốt truyện trong python dưới dạng jpg

Hướng dẫn how to save a plot in python as jpg - cách lưu một cốt truyện trong python dưới dạng jpg

Bhargav Rao

47.8K27 Huy hiệu vàng123 Huy hiệu bạc138 Huy hiệu Đồng27 gold badges123 silver badges138 bronze badges

Đã trả lời ngày 11 tháng 1 năm 2012 lúc 22:03Jan 11, 2012 at 22:03

YannyannYann

32.2k9 Huy hiệu vàng76 Huy hiệu bạc69 Huy hiệu Đồng9 gold badges76 silver badges69 bronze badges

1

Để làm rõ và cập nhật câu trả lời hữu ích và câu hỏi ban đầu. Một giải pháp sạch bao gồm cài đặt gối, đây là phiên bản cập nhật của Thư viện hình ảnh Python (PIL). Điều này được thực hiện bằng cách sử dụng

pip install pillow

Sau khi cài đặt gối, các lệnh matplotlib tiêu chuẩn

import matplotlib.pyplot as plt

plt.plot([1, 2])
plt.savefig('image.jpg')

sẽ lưu hình vào tệp JPEG và sẽ không tạo ra giá trịerror nữa.not generate a ValueError any more.

Trái ngược với câu trả lời của @AmillerRhodes, kể từ Matplotlib 3.1, các tệp JPEG vẫn chưa được hỗ trợ. Nếu tôi loại bỏ gói gối, tôi vẫn nhận được giá trị horror về một loại tệp không được hỗ trợ.

Đã trả lời ngày 27 tháng 3 năm 2015 lúc 13:48Mar 27, 2015 at 13:48

Hướng dẫn how to save a plot in python as jpg - cách lưu một cốt truyện trong python dưới dạng jpg

Divenexdivenexdivenex

13.4K9 Huy hiệu vàng53 Huy hiệu bạc54 Huy hiệu đồng9 gold badges53 silver badges54 bronze badges

3

Chỉ cần cài đặt gối với

In [5]: plt.savefig('books_read.png')
0 và nó sẽ hoạt động.

Đã trả lời ngày 21 tháng 7 năm 2014 lúc 21:00Jul 21, 2014 at 21:00

Letmaikletmaikletmaik

3.1031 Huy hiệu vàng32 Huy hiệu bạc40 Huy hiệu đồng1 gold badge32 silver badges40 bronze badges

Tôi vừa cập nhật matplotlib lên 1.1.0 trên hệ thống của mình và bây giờ nó cho phép tôi lưu tới jpg với

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

Để nâng cấp lên Matplotlib 1.1.0 với

In [5]: plt.savefig('books_read.png')
2, hãy sử dụng lệnh này:

pip install -U 'http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/matplotlib-1.1.0.tar.gz/download'

Chỉnh sửa (để trả lời bình luận):

In [5]: plt.savefig('books_read.png')
3 chỉ đơn giản là một tập hợp của matplotlib.pyplot và không gian tên numpy (cũng như một vài cái khác) jinto một không gian tên duy nhất.

Trên hệ thống của tôi,

In [5]: plt.savefig('books_read.png')
3 chỉ là thế này:

from matplotlib.pylab import *
import matplotlib.pylab
__doc__ = matplotlib.pylab.__doc__

Bạn có thể thấy rằng

In [5]: plt.savefig('books_read.png')
3 chỉ là một không gian tên khác trong cài đặt matplotlib của bạn. Do đó, không quan trọng bạn có nhập nó với
In [5]: plt.savefig('books_read.png')
3 hay với
In [5]: plt.savefig('books_read.png')
7.

Nếu bạn vẫn đang gặp vấn đề, thì tôi đoán phần phụ trợ MacOSX không hỗ trợ các lô tiết kiệm cho JPG. Bạn có thể thử sử dụng một phụ trợ khác. Xem ở đây để biết thêm thông tin.

Đã trả lời ngày 11 tháng 1 năm 2012 lúc 22:40Jan 11, 2012 at 22:40

1

Matplotlib có thể xử lý trực tiếp và trong suốt JPG nếu bạn đã cài đặt PIL. Bạn không cần phải gọi nó, nó sẽ tự làm điều đó. Nếu Python không thể tìm thấy PIL, nó sẽ gây ra lỗi.

Đã trả lời ngày 26 tháng 3 năm 2012 lúc 19:26Mar 26, 2012 at 19:26

Chỉ để hoàn thiện, nếu bạn cũng muốn kiểm soát chất lượng (nghĩa là mức nén) của kết quả đã lưu, nó dường như trở nên phức tạp hơn một chút, vì trực tiếp vượt qua

In [5]: plt.savefig('books_read.png')
8 dường như không ảnh hưởng đến kích thước và chất lượng đầu ra. Vì vậy, một mặt, người ta có thể đi theo cách lưu kết quả dưới dạng PNG trước, sau đó tải lại nó bằng
In [5]: plt.savefig('books_read.png')
9, sau đó lưu lại dưới dạng JPEG, sử dụng tham số
ValueError: Format "jpg" is not supported.
1 của ____ 39 - tương tự như những gì được đề xuất trong câu trả lời của Yann.

Mặt khác, người ta có thể tránh được độ lệch của tải và tiết kiệm, bằng cách sử dụng

ValueError: Format "jpg" is not supported.
2 (theo câu trả lời cho câu hỏi này):

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

Đã trả lời ngày 11 tháng 4 lúc 12:05Apr 11 at 12:05

Simonsimonsimon

3502 Huy hiệu bạc10 Huy hiệu đồng2 silver badges10 bronze badges

Tôi không chắc chắn về tất cả các phiên bản của matplotlib, nhưng trong tài liệu chính thức cho v3.5.0 savfig cho phép bạn chuyển cài đặt qua thư viện gối bên dưới, dù sao thì việc lưu hình ảnh. Vì vậy, nếu bạn muốn một jpg với các cài đặt nén cụ thể, ví dụ:

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

Điều này sẽ cung cấp cho bạn một JPG nén cao làm đầu ra.

Đã trả lời ngày 22 tháng 4 lúc 15:05Apr 22 at 15:05

DREDREDre

1.85515 huy hiệu bạc12 Huy hiệu đồng15 silver badges12 bronze badges