2011-11-25 18 views
18

मैं डेटा की 2 श्रेणियों के साथ एक स्कैटर प्लॉट करना चाहता हूं, एक पीले रंग में प्लॉट किया गया है और एक नीले रंग में, और वे हरे रंग में दिखाई देते हैं जहां वे ओवरले (या कोई अन्य संयोजन)। मैंने पाया है कि पारदर्शिता के साथ चीजें थोड़ा और मुश्किल भी हैं। ग्राफ का रंग इस बात से प्रभावित होता है कि अंतरिक्ष में प्लॉट किया गया आखिरी बिंदु नीला या पीला था।आर में, क्या एक 3 डी बनाने के लिए साजिश में 2 रंगों को ओवरले करना संभव है (उदाहरण के लिए योजक या घटिया रंग मिश्रण के साथ)

निम्न कोड के साथ उदाहरण के लिए: enter image description here

:

col1 <- rgb(red = .0, green = 0, blue = 0.8, alpha = 0.8) 
col2 <- rgb(red = .8, green = 0.8, blue = 0, alpha = 0.8) 
circle <- data.frame(x = c(0.2,0), 
        y = c(0,0), 
        col = c(col1, col2), 
        stringsAsFactors = F) 
orders <- c(1,2) 
plot(x = circle$x[orders], y = circle$y[orders], 
    col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "") 

कैसे आप वेक्टर orders सेट पर निर्भर करता है (जो सेट जो रास्ता दौर दो बड़े अंक तैयार कर रहे हैं) आप अलग अलग परिणाम प्राप्त

और अगर आप जिस क्रम में आप आप दौर दो हलकों साजिश स्वैप मिलता है: enter image description here

किसी भी तरह से, मैं चींटी था हरे रंग के लिए रंगों को मिलाकर टुकड़े टुकड़े करना। क्या इसे करने का कोई तरीका है? धन्यवाद!

संपादित करें - दो प्लॉट पीडीएफ डिवाइस का उपयोग करके किए गए थे। मैंने यह देखने के लिए tikzDevice के माध्यम से कोड चलाने का भी प्रयास किया है कि यह काम करता है लेकिन ऐसा नहीं हुआ।

+0

'colorspace' एक समारोह' mixcolor' कि इस तरह के एक मिश्रित रंग के मूल्य की गणना करेगा है:: वहाँ एक पूर्व एसओ रंग और alphas सम्मिश्रण के लिए नियमों के साथ पोस्टिंग है http://cran.r-project.org/web/packages/colorspace/colorspace.pdf। मुझे यह करने के तरीके के बारे में पता नहीं है - इस समस्या के मेरे समाधान डेटा को विज़ुअलाइज़ करने का एक अलग तरीका ढूंढना है, उदा। 'हेक्सबिन' के साथ, 'पहलू' का उपयोग करके या प्रत्येक बिंदु पर नेट स्कोर की गणना करना। – Andrie

+2

यह वास्तव में एक उत्तर नहीं है, लेकिन आप http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending पर देख सकते हैं - मुझे लगता है कि विभिन्न डिवाइस (पीडीएफ, tikzDevice, पीएनजी आदि) सभी का उपयोग कर रहे हैं ओवरलैड रंग निर्धारित करने के लिए इस एल्गोरिदम पर विविधताएं, और यह समझने में आपकी सहायता कर सकती है कि क्या हो रहा है। –

+1

विशेष रूप से, मैंने उन सूत्रों के साथ चारों ओर घूमने से पता लगाया है कि अल्फा-ब्लेंडिंग कम्यूटिव नहीं है (वास्तव में, जैसा कि लेख बताता है, कुछ मामलों में यह सहयोगी नहीं है, हालांकि इससे कोई फर्क नहीं पड़ता क्योंकि यह कोई फर्क नहीं पड़ता क्योंकि आप केवल दो रंगों को संयोजित कर रहे हैं) - जो उपरोक्त आपके "ऑर्डर मामलों" परिणामों को बताता है। –

उत्तर

5

पीडीएफ() डिवाइस के लिए सहायता फ़ाइल कहती है कि पृष्ठभूमि के लिए डिफ़ॉल्ट सेटिंग "पारदर्शी" है, हालांकि यह प्रैक्टिस में इसका व्यवहार प्रतीत नहीं होता है, शायद दर्शक एक सफेद पृष्ठभूमि मानते हैं या शायद क्योंकि डिफ़ॉल्ट के लिए डिफ़ॉल्ट साजिश समारोह "सफेद" है। मध्य भाग पहले एक रंग बन जाता है जो सफेद और हरे रंग का एक समान मिश्रण होता है, और दूसरा दूसरा आप फिर नीले रंग में जोड़ते हैं। तो मैं अनुमान लगा रहा हूं कि गणित एक 0.5 जी, 0.5, (0.5 + 0.8)/2 के आरजीबी मूल्य की भविष्यवाणी करेगा) इसके बाद उस मिश्रण को ओवरलेड रंग के साथ मिश्रित करके और मुझे लगता है कि सफेद + col1 बराबर अनुपात में जोड़ा जाता है col2 से मूल्य जो गणित को गैर-अनुवांशिक बनाता है। यदि आप पृष्ठभूमि को "पारदर्शी" पर मजबूर कर सकते हैं तो किसी भी दर पर अंतिम परिणाम शायद अलग होगा। डिफॉल्ट व्यवहार थिएटर रोशनी चमकने की तुलना में पेंट मिश्रणों की तरह अधिक है।

पीडीएफ रंग मॉडल का वर्णन http://www.adobe.com/devnet/pdf/pdf_reference.html में किया गया है और यह निर्धारित करेगा कि आप पीडीएफ डिवाइस से क्या उम्मीद कर सकते हैं (लेकिन यह आवश्यक नहीं है कि दर्शक क्या प्रदान करेगा)।

मैं अपने सिद्धांत है कि सफेद पृष्ठभूमि समस्या थी परीक्षण किया है (और यह गलत साबित होते हुए प्रतीत) उम्मीद है कि वहाँ स्तरित rgb वैक्टर करने के लिए कोई अतिरिक्त मूल्य होगा में पृष्ठभूमि को बदलने के द्वारा करने के लिए "काला":

pdf("testfil12rev.pdf", bg="black") 
col1 <- rgb(red = .0, green = 0, blue = 1, alpha = 0.5) 
col2 <- rgb(red = 1, green = 0, blue = 0, alpha = 0.5) 
circle <- data.frame(x = c(0.2,0), 
        y = c(0,0), 
        col = c(col1, col2), 
        stringsAsFactors = F) 
orders <- c(1,2) 
plot(x = circle$x[orders], y = circle$y[orders], bg="black", 
     col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "") 

dev.off() 

'ऑर्डर' सूचक को उलट करने से काले रंग की पृष्ठभूमि के साथ समान मिश्रित रंग नहीं होता है।

संपादित करें: How to calculate an RGB colour by specifying an alpha blending amount?

पैकेज
+0

मध्य में लगभग एक गंदा हरा है। मैं पारदर्शी सेटिंग्स के साथ प्रयोग करने की कोशिश करूंगा। – Andrew

+0

मैंने पारदर्शी सेटिंग्स ('png (" tmp.png ", बीजी =" पारदर्शी ") ') की कोशिश की है और यह चीजों को बदलता है (और संभवतः किसी कारक को हटाकर किसी भी खोज के साथ मदद करेगा), लेकिन परिणाम अभी भी गैर-कम्यूटिव हैं और अभी भी ऊपर बताए गए बेवकूफ उम्मीदों (नीले + पीले = हरे) के अनुरूप नहीं है। –

संबंधित मुद्दे