2009-07-22 31 views
5

Tôi có biểu đồ với hàng trăm mục, mà tôi làm một âm mưu Q-Q. Điều này dẫn đến EPS là 2,5 megabyte lớn. Điều này là quá nhiều đối với một con số chỉ được đưa vào một ấn phẩm và sẽ không được xem ở độ phóng đại 100x.Giảm kích thước ô theo định dạng EPS

Có tùy chọn nào trong R bằng cách nào đó tạo ra EPS nhỏ hơn không? Tôi đã tìm kiếm tài liệu để không có kết quả. Hoặc là lựa chọn tốt nhất của tôi, nói, rasterize nó sau đó tại 300 dpi? Nếu đó là trường hợp, bất kỳ khuyến nghị cho công cụ cho công việc này?

Mã R cho cốt truyện không có gì lạ mắt:

postscript(filename) 
qqnorm(n, main=title)) 
qqline(n) 
dev.off() 

EDIT: Doh! Câu hỏi của tôi đề cập đến EPS, và sau đó chuyển đổi nó sang một số định dạng raster. Khi tất nhiên tôi chỉ có thể tạo PNG ở vị trí đầu tiên từ R.

Trả lời

3

tôi đã thử một vài thứ không hiệu quả - tôi sẽ đưa chúng vào đây để cứu những người khác lãng phí thời gian của họ. Để tham khảo, tôi đặt n <- rnorm(1e5) trong mã của bạn ở trên.

Những điều đó không làm việc:

  1. Thiết colormodel <- "gray".

  2. Sử dụng giá trị khác của pch. (Một số giá trị khác tăng kích thước tập tin, nhưng tôi thấy không làm giảm nó.)

  3. Thiết useKerning = FALSE.

  4. Thay đổi cài đặt chiều rộng và chiều cao.

  5. Sử dụng pdf thay vì postscript.

  6. Sử dụng CarioPS từ gói Cairo.

Trong điều kiện này, tôi cho rằng bạn không thể giảm kích thước tệp bằng định dạng vectơ. Điều này có nghĩa là bạn sẽ phải sử dụng định dạng raster (hầu hết là PNG).

1

Vâng, EPS chỉ chứa hướng dẫn vẽ cốt truyện, do đó kích thước của nó phụ thuộc rất lớn vào số điểm dữ liệu bạn có. Nó có khả năng nhỏ hơn trong một PDF mà nén được sử dụng nhưng đặt cược tốt nhất của bạn có thể có thể là sử dụng một định dạng raster, mà có thể nhận được nhỏ hơn.

Tôi cho rằng EPS R tạo ra đã nhỏ như nó có thể nhận được (tôi chắc rằng họ có chức năng riêng trong Postscript để xử lý vẽ dữ liệu với tên một char, v.v ... vì điều đó khá phổ biến thực hành). Tôi nghi ngờ có nhiều cách để tối ưu hóa điều đó. Mặc dù vậy, tôi có thể bị nhầm lẫn, nhưng có khả năng R là chương trình duy nhất có đủ thông tin cấp cao để nén đầu ra hợp lý.

+0

Kết quả PDF ở tệp có kích thước 1 mb, vẫn quá lớn. Tôi đoán tôi có thể áp dụng lấy mẫu tập dữ liệu để giảm số điểm, nhưng không khó để mất một vài điểm ngoại lệ thú vị. –

3

Bạn có ba tùy chọn.

  1. Chấp nhận các kích thước tập tin lớn
  2. Lưu tập tin trong một định dạng không vector như png
  3. Tạo QQplot trên một mẫu ngẫu nhiên của dữ liệu. Một mẫu ngẫu nhiên của một vài trăm điểm nên cho một QQplot tương tự.

    postscript (filename) Samp < - mẫu (n, size = 200) qqnorm (Samp, chính = tiêu đề)) qqline (Samp) dev.off()

2

Trong cuộc thảo luận này tại R-list link text Tôi đã tìm hiểu về pdftk. Với n= 1e5 giảm kích thước pdf từ 6mb xuống 600k. Khá gọn gàng!

2

trong chế độ xem GS, chuyển đổi tệp của chúng tôi sang pdf, sau đó chuyển đổi thành PS hoặc EPS một lần nữa, kích thước tệp cuối cùng bị giảm 5-7 lần.

+0

bạn có thể cung cấp một dòng mã bash để thực hiện việc này không? – toxicate20

1

OP giải quyết vấn đề bằng cách tạo tệp PNG trực tiếp. Tôi đã phải sử dụng EPS vì PNG và các định dạng khác đã bí danh hình ảnh. Tôi sẽ phải chuyển đổi sang EPS để đưa vào tập tin LaTeX.

Tôi đã sử dụng GIMP để nhập tệp eps 10 MB được tạo từ chức năng hình ảnh R. Sau đó xoay, làm phẳng và lưu dưới dạng tệp eps 300KB. Flattening hòa trộn tất cả các lớp thành một lớp duy nhất và loại bỏ kênh alpha để minh bạch. Dễ dàng xử lý bởi LaTeX sau khi chuyển đổi này.

Trước khi chuyển đổi hình ảnh được hiển thị rất chậm trong Ghost Script và không thể được hiển thị ở tất cả trong epsviewer. GIMP sử dụng Ghost Script làm giao diện người dùng, vì vậy việc nhập chậm, nhưng một khi được nhập, tất cả quá trình xử lý và hiển thị rất nhanh.

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