2012-12-25 41 views
6

Đối với một bài viết tôi đang tạo ra các lô lưới biến dạng phần tử hữu hạn, mà tôi hình dung bằng cách sử dụng polycollection matplotlib của. Các hình ảnh được lưu dưới dạng pdf.rasterizing matplotlib trục nội dung (nhưng không phải khung, nhãn)

Sự cố phát sinh đối với các mắt lưới có mật độ cao, mà cách tiếp cận ngây thơ dẫn đến tệp quá lớn và hiển thị quá sâu để thực tế.

Đối với các mắt lưới này, thực sự không có ý nghĩa gì khi vẽ từng phần tử dưới dạng đa giác; nó có thể dễ dàng được rasterized, như được thực hiện khi lưu hình ảnh như jpg hoặc png. Tuy nhiên, để in, tôi muốn giữ một khung, nhãn và chú thích sắc nét.

Có ai biết nếu có thể đạt được loại rasterization lai này trong matplotlib không?

Tôi có thể nghĩ về các giải pháp liên quan đến imshow, và bỏ qua polycollection, nhưng tôi rất thích sử dụng các thành phần tích hợp của matplotlib.

Cảm ơn lời khuyên của bạn.

Trả lời

9

Chỉ cần chuyển từ khóa rasterized=True tới trình tạo bộ sưu tập của bạn. Ví dụ:

col = collections.PolyCollection(<arguments>, rasterized=True) 

Điều này cho phép một rasterization có chọn lọc các yếu tố đó chỉ (ví dụ, nếu bạn đã làm một cốt truyện bình thường trên đầu trang của nó, nó sẽ được vector hóa theo mặc định). Hầu hết các lệnh như plot hoặc imshow cũng có thể lấy từ khóa rasterized. Nếu ai muốn dùng effect đó toàn bộ nhân vật (bao gồm cả nhãn và chú thích), điều này sẽ làm điều đó:

fig = plt.figure() 
a = fig.add_subplot(1,1,1, rasterized=True) 

(Nhưng đây không phải là những gì bạn muốn, như đã nêu trong câu hỏi.)

+0

Wow, mà đơn giản . Tôi lo lắng về kỹ năng googling của tôi bây giờ. Nhưng cảm ơn bạn rất nhiều vì câu trả lời này, đây chính xác là những gì tôi đã hy vọng! – gertjan

+0

Điều này thật tuyệt! Bất kỳ ý tưởng làm thế nào để kiểm soát dpi của rasterization, mặc dù? Dường như bỏ qua dpi tôi chuyển sang 'figure' và' savefig' ... – weronika

+0

@weronika, nếu dpi trong 'figure' hoặc' savefig' không hoạt động, thì tôi không thực sự biết cách thay đổi nó . 'bộ sưu tập' dường như sử dụng trang trí của nghệ sĩ' allow_rasterization', nhưng chỉ trong nháy mắt, mã tôi không thể thấy cách đặt dpi. – tiago

Các vấn đề liên quan