2012-12-12 35 views
6

Một số đối tượng (chức năng) của ggplot2 hỗ trợ kênh alpha.Làm phẳng kênh alpha trong ggplot2

http://docs.ggplot2.org/current/geom_point.html

Đây là một tính năng tốt đẹp, nhưng màu sắc trong suốt trong pdf và png file thường nguồn gốc của vấn đề đa dạng.

Tôi có thể sử dụng tùy chọn alpha và nhận các tệp đầu ra pdf phẳng như thế nào?

+0

bạn có thể cần sử dụng công cụ PDF bên ngoài để thực hiện việc này ... mặc dù có vẻ như các tùy chọn của bạn khác với Adobe Acrobat bị giới hạn ... http://askubuntu.com/questions/128595/flattening-pdf-transparency –

Trả lời

0

Để tránh sự cố với đồ họa tương tự trong LaTex, tôi tạo tệp png với R. Ở đó bạn có thể chơi với tùy chọn type = c("cairo", "cairo-png", ...), đối với tôi, "cửa sổ" hoạt động tốt ở đó. Sau đó, tôi chuyển đổi nó thành jpg với imagemagick và bao gồm jpg này trong tập tin LaTeX của tôi, kết quả pdfLaTeX sau đó trong đầu ra pdf phẳng.

3

Tôi đã gặp sự cố liên tục với tài liệu Latex lớn được tạo bằng knitr + ggplot hoàn toàn có thể đọc được trên máy Mac của tôi nhưng không thể mở được cho người dùng Windows. Sau nhiều nỗ lực tối ưu hóa và làm phẳng pdf, cuối cùng tôi đã phân tách vấn đề này thành một âm mưu alpha nặng. Trong trường hợp của tôi, việc chuyển đổi từ đầu ra pdf sang png tạo ra sự khác biệt (mặc dù, dựa trên câu hỏi của bạn, có vẻ như pngs có thể không giải quyết được vấn đề của bạn).

Nếu bạn đang dùng knitr, bạn có thể tự động tạo phiên bản png bằng cách đặt tùy chọn đầu ra hình ảnh toàn cục (hoặc chunk-specific) thành "png" thay vì mặc định là "pdf". Tùy thuộc vào cốt truyện, điều này có thể thu nhỏ đáng kể kích thước & độ phức tạp của một ggplot alpha-nặng đáng kể. Tôi đã có một 10x giảm kích thước tập tin âm mưu từ ~ 700KB đến ~ 70KB (một số lô đơn giản hơn có thể thực sự tăng kích thước, mặc dù).

Việc cân nhắc có khả năng mất một số độ phân giải cho các ô. Để lưu hành bản nháp bằng email hoặc cho một số loại ô cụ thể, điều này có thể là tốt. Nếu mất độ phân giải quá lớn, hãy cân nhắc điều chỉnh dpi đầu ra (mặc dù, tất nhiên, điều này sẽ làm tăng kích thước tệp nhưng vẫn có thể hoạt động tốt hơn trong cài đặt đa nền tảng).

Để thiết lập đầu ra hình ảnh toàn cầu để "png" bạn có thể sử dụng mã như thế này:

library(knitr) 
    opts_chunk$set(dev="png", dpi=200) 

Để thiết lập đầu ra để "png" trong một đoạn cụ thể (ví dụ, chỉ là âm mưu đó là alpha- nặng), sử dụng tùy chọn dev="png". Ví dụ dưới đây tạo ra một âm mưu nặng không thường xuyên. Với knitr + Latex, tùy chọn include=FALSE sẽ ngăn không cho phiên bản pdf tự động được bao gồm (Tôi không chắc chắn nếu điều này là cần thiết cho RMarkdown).

<<myplot, dev="png", dpi=200, include=FALSE>> 
    library(ggplot2) 
    x <- 1:1000 
    y <- 2*x + rnorm(1000, 0, 100) 
    df <- data.frame(x,y) 
    ggplot(df, aes(x=x, y=y)) + geom_point(alpha=.3) 
    @ 

Đoạn mã trên sẽ tạo một tệp có tên myplot.png, trong Latex, có thể dễ dàng được bao gồm trong tài liệu có lệnh includegraphics lồng trong môi trường hình.

\begin{figure}[h!] 
    \centering 
    \scalebox{.5}{\includegraphics{myplot.png}} 
    \caption{Some caption \label{fig:myplot}} 
    \end{figure} 

Một nguồn tài nguyên mà có thể hữu ích là bài viết trên blog này được tổ chức tại R Bloggers:

Fast-track publishing using knitr: exporting images for sharing and press

Ngoài ra, xem Plots phần của knitr options.

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