2016-10-23 7 views
5

मैं आर ग्राफिक में एक छवि को साजिश करने के लिए "साजिश" आर पैकेज का उपयोग करने का प्रयास करता हूं।आर सार्थक रूप से पृष्ठभूमि में एक छवि जोड़ें

मैं पहली बार एक स्थानीय कंप्यूटर से कोई चित्र शामिल करने की कोशिश की:

library(plotly) 

outfile <- tempfile(fileext = ".png") 

png(outfile) 
plot(rnorm(200), rnorm(200)) 
dev.off() 

plot_ly(x = c(1, 2, 3), y = c(1, 2, 3)) %>% 
    layout(
    images = list(
     list(
     source = outfile, 
     xref = "x", 
     yref = "y", 
     x = 1, 
     y = 1, 
     sizex = 2, 
     sizey = 2, 
     sizing = "stretch", 
     opacity = 0.4, 
     layer = "below" 
    ) 


    ) 
) 

लेकिन मैं यह करने के लिए प्रबंधन नहीं किया। मैंने तब सोचा कि ऐसा इसलिए था क्योंकि साजिश के लिए जाहिर तौर पर एक http या https छवि की आवश्यकता होती है।

पहला प्रश्न: क्या स्थानीय फ़ाइल से छवि आयात करना संभव है (जाहिर है यह पाइथन: https://plot.ly/python/images/ के साथ संभव है)?

जैसा कि स्थानीय छवि को एम्बेड करना असंभव प्रतीत होता है, मैं एक छवि आयात करने का प्रयास करता हूं जिसे मैंने अपने गीथब पर अपलोड किया था। लेकिन ऐसा लगता है कि न तो काम न करें:

library(plotly) 

plot_ly(x = c(1, 2, 3), y = c(1, 2, 3)) %>% 
    layout(
    images = list(
     list(
     source = "https://github.com/charlottesirot/elementR/blob/master/inst/www/2.png", 
     xref = "x", 
     yref = "y", 
     x = 1, 
     y = 1, 
     sizex = 2, 
     sizey = 2, 
     sizing = "stretch", 
     opacity = 0.4, 
     layer = "below" 
    ) 


    ) 
) 

यहां समस्या क्या है?

मैंने हर जगह देखा है, प्लॉटली फोरम पर प्रश्न पोस्ट किए हैं (http://community.plot.ly/t/import-a-local-image-in-plot/2476, http://community.plot.ly/t/add-a-background-image/2457) लेकिन मुझे मेरे जवाब नहीं मिला।

क्या आपके पास कोई विचार है?

+0

क्या आपने यह https://plot.ly/~as5165/12/#code देखा था। आर नहीं लेकिन मदद कर सकता है। छवि बेस 64 है। हमें बताएं कि आपके द्वारा किस प्रकार प्रबंध किया जाता है – pssguy

उत्तर

1

दो छोटी चीजें जिन्हें बदलने की आवश्यकता है।

  • यूआरएल कुछ जो एक छवि की तरह लग रहा था की ओर इशारा किया, लेकिन वास्तव में, पूरे GitHub पेज से पता चलता जोड़कर ?raw=true सुनिश्चित करें कि केवल छवि में दिखाया गया है कि निर्देशांक
  • छवि लोड करने के बाद साजिश के बाहर थे बनाता

htmlwidget के माध्यम से इस कोड को सहेजना अभी भी CORS समस्या के कारण छवि नहीं दिखाता है। दूसरे स्निपेट में छवि base64 एन्कोडेड है और साजिश में जोड़ा गया है। यह RStudio में नहीं दिखाता है लेकिन HTML आउटपुट में।

नीचे दिया गया कोड निम्नलिखित प्लॉट का उत्पादन करता है।

enter image description here

library('plotly') 

plot_ly(x = c(1, 2, 3), y = c(1, 2, 3), type = 'scatter', mode = 'markers') %>% 
    layout(
    images = list(
     list(
     source = "https://github.com/charlottesirot/elementR/blob/master/inst/www/2.png?raw=true", 
     xref = "x", 
     yref = "y", 
     x = 1, 
     y = 3, 
     sizex = 2, 
     sizey = 2, 
     sizing = "stretch", 
     opacity = 0.4, 
     layer = "below" 
    ) 
    ) 
) 

स्निपेट इनकोडिंग छवि बेस 64 के लिए।

library('plotly') 
library('htmlwidgets') 
library('RCurl') 

image_file <- "/temp/2.png" 
txt <- RCurl::base64Encode(readBin(image_file, "raw", file.info(image_file)[1, "size"]), "txt") 


p <- plot_ly(x = c(1, 2, 3), y = c(1, 2, 3), type = 'scatter', mode = 'markers') %>% 
    layout(
    images = list(
     list(
     source = paste('data:image/png;base64', txt, sep=','), 
     xref = "x", 
     yref = "y", 
     x = 1, 
     y = 3, 
     sizex = 2, 
     sizey = 2, 
     sizing = "stretch", 
     opacity = 0.4, 
     layer = "below" 
    ) 
    ) 
) 
p 
htmlwidgets::saveWidget(p, "/tmp/plot.html") 
संबंधित मुद्दे