2015-05-18 18 views
9

Có cách nào để sử dụng PIL với matplotlib để đặt biểu trưng ở dạng EPS hoặc SVG (hoặc bất kỳ định dạng vector có thể mở rộng nào) để đặt biểu trưng trên biểu đồ và xuất tệp cuối cùng dưới dạng EPS. Bây giờ tôi nhận được đồ họa được hiển thị khủng khiếp vì có tệp .png đang cố gắng chuyển đổi thành định dạng EPS, trong đó mục tiêu là lưu hình ảnh dưới dạng .eps hoặc .svg.Matplotlib imshow với EPS

Tôi nghĩ rằng đây có thể là một hạn chế do phụ trợ, tôi mở để thay đổi cái tôi sử dụng.

Đây là những gì không làm việc:

ax1.set_axis_bgcolor('#fafafa') 

img = image.imread('./static/images/logo.png') 
image_axis = fig.add_axes(ax1.get_position()) 
image_axis.patch.set_visible(False) 
image_axis.yaxis.set_visible(False) 
image_axis.xaxis.set_visible(False) 
image_axis.set_xlim(0,19.995) 
image_axis.set_ylim(0,11.25) 

image_axis.imshow(img, extent=(11.79705,18.99525,.238125,1.313625), zorder=-1, alpha=0.15) #need to keep a 5.023 x by y ratio (.4 x .079) 

fig.savefig('static/images/graphs/'+filename+'.eps', format='eps', bbox_inches='tight') 

Bất kỳ bản cập nhật?

+0

Bạn vừa thử? [Tài liệu] (http://matplotlib.org/1.3.1/users/image_tutorial.html#importing-image-data-into-numpy-arrays) ngụ ý rằng nếu hình ảnh được chuyển đến 'imshow' là không phải png, matplotlib sẽ rơi trở lại trên PIL mà sẽ có thể đối phó với eps ([docs] (http://pillow.readthedocs.org/en/latest/handbook/image-file-formats.html#eps)). Tôi đã không có bất kỳ tập tin eps để tay để kiểm tra, nhưng có thể thử ngày mai, có khả năng. –

Trả lời

0

tôi thường đạt được một vẽ tốt hơn trong trường hợp này với một cái gì đó như:

from PIL import Image 

logo = Image.open('icons\logo.png') 
# TODO define bbox as a matplotlib.transforms.Bbox 
image_axis.imshow(logo, clip_box=bbox, aspect='equal', 
    origin='lower', interpolation='nearest') 

(Matplotlib 1.4.2, nếu bạn sử dụng một phiên bản cũ chơi với interpolationorigin tùy chọn có thể giúp)

+0

Điều này có hoạt động với đồ họa véc-tơ - trái ngược với png không? – Jared

+0

PIL có thể xử lý các tệp .eps http://pillow.readthedocs.org/en/latest/handbook/image-file-formats.html chúng sẽ được rasterized nhưng bạn có thể kiểm soát số lượng dấu chấm (xem liên kết) – GBy

+0

Mục tiêu là để con số tiết kiệm như một eps hoặc một số đồ họa véc tơ có thể mở rộng khác, với logo được bao gồm. – Jared

-1

tôi sử dụng nó như thế này:

self.img=mpimg.imread('images/Logo.jpg') 
logo=self.fig.figimage(self.img, xo=260, yo=2600,zorder=100) 
# 
self.fig.savefig('myplot.png',dpi=300) 

và tôi nhận được kết quả tốt nhất với đầu ra .png để mở rộng quy mô. Tôi mở rộng các ô của mình lên đến A1 và có vẻ rất tuyệt. Thay đổi kích thước và dpi khi bạn tạo hình

plt.figure(1,figsize=(size_x,size_y), dpi=98) 
+1

Ví dụ của bạn nhúng biểu tượng jpg - OP muốn nhúng eps/svg tôi nghĩ. Tôi nghĩ vấn đề là họ muốn giữ đồ họa vector trong suốt. –

+0

@JRichardSnape Đúng vậy - mục tiêu là để có đầu ra trong SVG/EPS. Tôi vẫn chưa giải quyết vấn đề này, nhưng sẽ cập nhật nếu tôi làm vậy. – Jared

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