2012-04-12 33 views
6

Tôi không thể tìm thấy bất kỳ ai khác có vấn đề này. Trong matplotlib, bạn có thể xem các ô của bạn bằng cách sử dụng show() hoặc savefig(). Những hình ảnh này tạo ra một chút khác nhau; trong trường hợp của tôi, hình ảnh savefig() là xấu hơn và khó hiểu hơn. Tôi cần phải làm cho cuộc sống dễ dàng cho người kiểm tra của tôi, vì vậy ..matplotlib, savefig: thiết lập DPI bị bỏ qua

Tôi đã tìm thấy một số chủ đề gợi ý tôi đặt kích thước DPI cho phù hợp với show(). Tôi đã thử:

-> Setting savefig.dpi trực tiếp với matplotlib.rcParams [ 'savefig.dpi'] = 80.

-> Setting savefig.dpi trực tiếp trong ~/.matplotlib/matplotlibrc.

-> Di chuyển tệp rc của tôi sang CWD.

-> Cuối cùng, sử dụng savefig ('image.pdf', dpi = 80)

tôi có thể xác minh rằng các thuộc tính thực sự là việc thiết; nhưng có vẻ như thiết lập được lưu trữ bởi savefig(). Bất cứ ai có thể giúp đỡ với điều này?

(Simplified) mã:

plt.bar(ind, functimes, yerr=stddev, bottom=0, width=barWidth, align='center', color='b') 

ax = plt.gca() 
ax.legend(barRcts, barLegend) 
plt.title("Function Call Overhead") 
plt.xlabel("Function ID") 
plt.ylabel("Execution Time [us]") 

plt.xticks(ind, funcNames) 
figtest.autofmt_xdate() 

plt.savefig(out_file, dpi=80, format='pdf') 
+5

'matplotlib' lưu các tệp' pdf' ở định dạng vectơ. Trừ khi bạn có hình ảnh bitmap trong đó, DPI là khá vô nghĩa trong một hình ảnh vector vì chúng là độ phân giải độc lập. – Avaris

+1

Aha, tôi hiểu rồi. Vì vậy, không có cách nào để lưu hình ảnh pdf với savefig() để chúng giống hệt với những hình ảnh bạn có thể lưu (thủ công) với show()? – memstick

+5

Chúng phải giống hệt nhau. Sự khác biệt duy nhất có thể là nếu bạn thay đổi kích thước hình trước khi lưu nó. Nhưng bạn cũng có thể thiết lập kích thước của con số của bạn ('con số ((chiều rộng, chiều cao))') và 'savefig' sẽ sử dụng nó. – Avaris

Trả lời

3

tiết kiệm PDF sử dụng các thiết lập DPI cho độ phân giải hình ảnh bên trong file PDF, không cho bất kỳ dòng/độ phân giải hình đa giác (đó là vô nghĩa trong một định dạng vector).

Nếu bạn hài lòng với đầu ra trên màn hình và không cần phải có đồ họa có thể mở rộng, hãy lưu là png có lẽ là tốt.

+0

Nhưng lưu ý rằng nếu bạn đã sử dụng 'contourf' (ví dụ) bạn sẽ có được một hình ảnh raster bên trong pdf/svg của bạn, do đó dpi có ý nghĩa một lần nữa. –

+0

@ChrisH - Tôi không đồng ý. Contourf tạo ra đầu ra vector không raster. Tuy nhiên, imshow sẽ tạo ra một hình ảnh như vậy (từ bộ nhớ) có tồn tại một hình ảnh dpi để hỗ trợ. HTH – pelson

+1

nó quay ra bạn đúng - theo 5.5 MB của tôi .svg mà làm chậm inkscape để thu thập thông tin tuyệt đối. Sau đó, cài đặt dpi giúp nhận được đường truyền ngay cho trục và đường kẻ phủ. Tôi đã nhận ra điều này một lúc trước nhưng quên đăng nhập và cập nhật. –

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