ggplot

2013-05-07 21 views
12

के साथ पृष्ठभूमि छवि पर प्लॉट डेटा मैं पृष्ठभूमि छवि पर कुछ डेटा प्लॉट करने की कोशिश कर रहा हूं। समस्या यह है कि दोनों परतें एक ही पैमाने का उपयोग कर समाप्त होती हैं। यह दुर्भाग्य से समस्याग्रस्त है।ggplot

एक उदाहरण।

मैं इस image पर कुछ डेटा प्लॉट करना चाहता हूं।

sample image

ठीक है। तो मैं इसे इस तरह ggplot में साजिश।

img <- readJPEG("image.jpg") 
image <- apply(img, 1:2, function(v) rgb(v[1], v[2], v[3])) 
image <- melt(image) 
ggplot(image, aes(row, -column, fill=fill)) + geom_tile() + scale_fill_identity() 

और यह अच्छी तरह से काम करता है। तो, चलिए कुछ डेटा शीर्ष पर जोड़ें।

df <- data.frame(x=sample(1:64, 1000, replace=T), 
    y=sample(1:64, 1000, replace=T)) 
ggplot(df, aes(x,y)) + stat_bin2d() 

नमूना डेटा प्लॉटिंग, मुझे this मिलता है। enter image description here

तो मैं सिर्फ ढाल छवि पर इस डेटा प्लॉट को स्तरित करना चाहता हूं।

ggplot(image, aes(row, -column, fill=fill)) + geom_tile() + 
    scale_fill_identity() + geom_point(data=df2, aes(x=x, y=-y)) 

लेकिन यह की तरह this

enter image description here

एक दूसरे को भरने पैमाने एक त्रुटि फेंकता निर्दिष्ट करने के लिए कोशिश कर रहा समाप्त होता है। मुझे लगता है कि this कहता है कि यह नहीं किया जा सकता है, लेकिन मुझे आशा है कि एक कामकाज या कुछ मैं देख रहा हूं।

+0

[यह] (http://kohske.wordpress.com/2010/12/26/use-image-for-background -in-ggplot2 /) पोस्ट पुराना है और ggplot के नए संस्करणों के लिए कुछ अद्यतन करने की आवश्यकता होगी, लेकिन यह कम से कम एक तरीका सुझा सकता है। – joran

उत्तर

17

इस प्रयास करें, (या वैकल्पिक रूप annotation_raster)

library(ggplot2) 
library(jpeg) 
library(grid) 

img <- readJPEG("image.jpg") 

df <- data.frame(x=sample(1:64, 1000, replace=T), 
       y=sample(1:64, 1000, replace=T)) 

ggplot(df, aes(x,y)) + 
    annotation_custom(rasterGrob(img, width=unit(1,"npc"), height=unit(1,"npc")), 
        -Inf, Inf, -Inf, Inf) + 
    stat_bin2d() + 
    scale_x_continuous(expand=c(0,0)) + 
    scale_y_continuous(expand=c(0,0)) 

screenshot

+0

ध्यान दें कि यह 'coord_polar' के साथ काम नहीं करता है, लेकिन इस प्रश्न पर उस मामले के लिए कोई समाधान मिल सकता है http://stackoverflow.com/questions/34496000/trying-to-add-an-image-to-a- ध्रुवीय साजिश देता है-त्रुटि एनोटेशन-कस्टम केवल काम। – Deleet