2012-12-12 18 views
6

में अल्फा चैनल फ़्लैट करें ggplot2 के कुछ ऑब्जेक्ट्स (फ़ंक्शन) अल्फा चैनल का समर्थन करते हैं।ggplot2

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

यह एक अच्छा फीचर है, लेकिन पीडीएफ और PNG फ़ाइलों में पारदर्शी रंग अक्सर विविध मुसीबत के स्रोत हैं।

मैं अल्फा विकल्प का उपयोग कैसे कर सकता हूं और पीडीएफ आउटपुट फाइलों को कैसे प्राप्त कर सकता हूं?

+0

आपको ऐसा करने के लिए शायद बाहरी पीडीएफ उपकरण का उपयोग करने की आवश्यकता है ... हालांकि ऐसा लगता है कि एडोब एक्रोबैट के अलावा आपके विकल्प सीमित हैं ... http://askubuntu.com/questions/128595/flattening-pdf-transparency –

उत्तर

0

लाटेक्स में समान ग्राफिक्स के साथ परेशानी को रोकने के लिए, मैं आर के साथ पीएनजी फाइलें उत्पन्न करता हूं। वहां आप type = c("cairo", "cairo-png", ...) विकल्प के साथ खेल सकते हैं, मेरे लिए, "विंडोज़" ठीक काम करता है। इसके बाद, मैं इसे छवि मैजिक के साथ जेपीजी में परिवर्तित करता हूं और इस जेपीजी को अपनी लाटेक्स फ़ाइल में शामिल करता हूं, पीडीएफएलएटीएक्स परिणाम तब flattened पीडीएफ आउटपुट में परिणाम देता है।

3

मुझे knitr + ggplot के साथ बनाए गए बड़े लेटेक्स दस्तावेज़ के साथ चल रही समस्याएं थीं जो कि मेरे मैक पर पूरी तरह से पठनीय थी लेकिन विंडोज उपयोगकर्ताओं के लिए अपरिहार्य थी। पीडीएफ को अनुकूलित करने और फ़्लैटन करने के कई प्रयासों के बाद, मैंने अंततः इस मुद्दे को एक अल्फा-भारी साजिश में अलग कर दिया। मेरे मामले में, पीडीएफ से पीएनजी आउटपुट में स्विच करने से अंतर आया (हालांकि, आपके प्रश्न के आधार पर, ऐसा लगता है जैसे पीएनजी आपकी समस्या का समाधान नहीं कर सकते हैं)।

यदि आप बुनाई का उपयोग कर रहे हैं, तो आप "पीडीएफ" के डिफ़ॉल्ट के बजाय वैश्विक (या खंड-विशिष्ट) छवि आउटपुट विकल्प dev "png" को सेट करके स्वचालित रूप से एक पीएनजी संस्करण बना सकते हैं। साजिश के आधार पर, यह आकार & अल्फा-भारी ggplot की जटिलता को कम कर सकता है। मेरे पास प्लॉट फ़ाइल आकार में ~ 700 केबी से ~ 70 केबी तक 10x की कमी आई है (हालांकि कुछ सरल भूखंड वास्तव में आकार में वृद्धि कर सकते हैं)।

व्यापार-बंद होने के कारण भूखंडों के लिए संकल्प का कुछ नुकसान होने की संभावना है। ईमेल द्वारा या कुछ प्रकार के भूखंडों के लिए एक मसौदा प्रसारित करने के लिए यह ठीक हो सकता है। यदि संकल्प का नुकसान बहुत बढ़िया है, तो उत्पादन के डीपीआई को समायोजित करने पर विचार करें (हालांकि, ज़ाहिर है, यह फ़ाइल आकार में वृद्धि करेगा लेकिन फिर भी क्रॉस-प्लेटफार्म सेटिंग्स में बेहतर काम कर सकता है)।

"png" आप इस तरह कोड इस्तेमाल कर सकते हैं करने के लिए वैश्विक छवि उत्पादन सेट करने के लिए:

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

(उत्पादन के लिए "png" एक विशिष्ट टुकड़ा के भीतर जैसे, सिर्फ साजिश है कि अल्फा सेट करने के लिए भारी), dev="png" विकल्प का उपयोग करें। नीचे दिया गया उदाहरण एक नियमित, गैर-अल्फा भारी साजिश उत्पन्न करता है। Knitr + लेटेक्स के साथ, include=FALSE विकल्प स्वचालित रूप से शामिल होने से पीडीएफ संस्करण को रोक देगा (मुझे यकीन नहीं है कि यह 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) 
    @ 

ऊपर कोड एक फ़ाइल बुलाया myplot.png जो, लेटेक्स में, तो आसानी से दस्तावेज़ में शामिल किया जा सकता है के साथ एक includegraphics एक आंकड़ा वातावरण में नेस्ट आदेश उत्पन्न होगा।

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

एक और संसाधन है कि उपयोगी हो सकता है इस ब्लॉग पोस्ट आर ब्लॉगर पर होस्ट है:

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

इसके अलावा, knitr options के भूखंड खंड देखें।