CodeGym /Các khóa học /Python SELF VI /Lưu biểu đồ thành hình ảnh để sử dụng trong báo cáo

Lưu biểu đồ thành hình ảnh để sử dụng trong báo cáo

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Các cách lưu biểu đồ

Hôm nay mình không chỉ tạo ra những biểu đồ đẹp mà còn biến chúng thành những hình ảnh xịn sò, có thể chèn vào báo cáo, bài thuyết trình hoặc để dành khoe với bạn bè: "Xem này, mình đã làm được!". Ai mà biết được, có khi biểu đồ của bạn lại nổi tiếng trên mạng xã hội, và bạn cuối cùng cũng có được 15 phút nổi tiếng!

Giống như trong một show nấu ăn hay, nơi ta chọn công thức, ta sẽ bắt đầu bằng việc xem qua các định dạng file khác nhau để lưu biểu đồ. Mỗi định dạng có đặc điểm riêng, và hiểu được các điều này sẽ giúp bạn chọn đúng "món ăn" cho "menu" của mình. Đây là một số ví dụ:

  • PNG (Portable Network Graphics): là một trong những định dạng phổ biến nhất cho web. Có độ nén tốt mà không mất chất lượng, hỗ trợ nền trong suốt và được nhiều ứng dụng hỗ trợ.
  • PDF (Portable Document Format): phù hợp để chèn vào tài liệu. Là định dạng vector, nên giữ được độ nét khi phóng to.
  • SVG (Scalable Vector Graphics): cũng là định dạng vector, rất phù hợp cho web. Hỗ trợ tính tương tác và hiệu ứng animation.
  • JPEG (Joint Photographic Experts Group): thường dùng cho ảnh, vì định dạng này có nén mất dữ liệu, điều này không phù hợp lắm với biểu đồ có văn bản.

Giờ chúng ta đã hiểu mình có những lựa chọn gì, hãy cùng bắt đầu lưu biểu đồ bằng chức năng savefig() trong thư viện Matplotlib.

Lưu biểu đồ với savefig()

Matplotlib giúp việc lưu biểu đồ trở nên dễ dàng như cập nhật hệ điều hành trên điện thoại của bạn (nhưng hy vọng mọi thứ đều chạy đúng kế hoạch). Hãy cùng xem cách nó hoạt động.

Python

import matplotlib.pyplot as plt

# Giả sử chúng ta có biểu đồ đơn giản
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y, label='Số nguyên tố')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Biểu đồ tuyến tính số nguyên tố')
plt.legend()

# Lưu biểu đồ ra file
plt.savefig('primes.png')

Code này tạo ra file primes.png trong thư mục hiện tại. Thế là xong! Không cần học thuộc những câu thần chú hay hiến tế cho các vị thần số hóa. Bạn chỉ cần thay plt.show() bằng plt.savefig('đường_dẫn/tên_file') và xong ngay!

2. Tùy chỉnh khi lưu

Tất nhiên, chỉ lưu biểu đồ đơn giản thôi thì chưa đủ — chúng ta muốn nó trông thật tuyệt vời! Như câu nói cũ: "Nếu biểu đồ mà xấu thì chẳng ai thèm để ý". Hoặc gì đó tương tự.

Tùy chỉnh chất lượng và độ phân giải hình ảnh

Để tạo ra hình ảnh chất lượng cao, bạn có thể chỉnh tham số dpi (số điểm trên mỗi inch), định nghĩa mật độ pixel trong hình ảnh. Giá trị càng cao thì hình càng chi tiết. Với web thường 72 dpi là đủ, còn in ấn thì cần 300 dpi trở lên.

Python

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

plt.plot(x, y)

# Lưu biểu đồ với độ phân giải cao
plt.savefig("high_quality_plot.png", dpi=300)
plt.show()

Ở đây dpi=300 tăng chất lượng hình ảnh, làm nó rõ ràng hơn, rất hữu ích cho báo cáo và in ấn.

Lưu không có viền và khoảng cách thừa

Matplotlib mặc định thêm không gian xung quanh biểu đồ, điều này có thể không tiện lợi khi chèn vào báo cáo. Để lưu hình ảnh không có viền, dùng tham số bbox_inches="tight".

Python

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]

plt.plot(x, y)

# Lưu biểu đồ không có viền
plt.savefig("plot_no_borders.png", bbox_inches="tight")
plt.show()

Tham số bbox_inches="tight" loại bỏ khoảng cách thừa xung quanh biểu đồ, giúp hình ảnh gọn gàng hơn.

Đặt kích thước biểu đồ trước khi lưu

Đôi khi cần lưu biểu đồ với kích thước cụ thể (ví dụ cho slide thuyết trình hoặc đăng web). Bạn có thể đặt kích thước biểu đồ bằng figure(figsize=(chiều rộng, chiều cao)).

Python

import matplotlib.pyplot as plt

# Đặt kích thước biểu đồ
plt.figure(figsize=(10, 5))  # 10 inch chiều rộng và 5 inch chiều cao

x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]

plt.plot(x, y)
plt.title("Biểu đồ có kích thước tùy chỉnh")

# Lưu biểu đồ với kích thước đã đặt
plt.savefig("custom_size_plot.png")
plt.show()

Trong ví dụ này, biểu đồ được lưu với kích thước 10x5 inch. Kích thước này có thể tùy chỉnh theo yêu cầu của báo cáo hoặc bài thuyết trình.

Tham số bổ sung trong savefig()

  • transparent=True: Lưu hình ảnh với nền trong suốt, hữu ích khi chèn trên nền màu hoặc nền trong suốt.
  • pad_inches: Đặt khoảng cách bổ sung xung quanh biểu đồ. Dùng cùng với bbox_inches.
  • format: Chỉ định định dạng file lưu: pdf, png, jpg, ...

Nếu không chỉ định tham số format, thì hàm savefig() sẽ cố gắng xác định dựa trên tên file.

Python

# Lưu biểu đồ với các tham số tùy chỉnh
plt.savefig('primes_high_res', dpi=300, pad_inches='tight', format='png', transparent=True)

Giờ đây biểu đồ của bạn sẽ sắc nét đến mức ai nhìn vào cũng phải thốt lên: "Wow, chắc chắn bạn biết bạn đang làm gì!"

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION