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.
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.
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"
.
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))
.
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ớibbox_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.
# 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ì!"
GO TO FULL VERSION