2016-10-23 21 views
5

Tôi cố gắng sử dụng gói "sơ đồ" R để vẽ một hình ảnh trong đồ họa R.R âm mưu thêm hình ảnh vào nền

đầu tiên tôi đã cố gắng để bao gồm một hình ảnh từ một máy tính cục bộ:

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" 
    ) 


    ) 
) 

Nhưng tôi đã không quản lý để làm điều đó. Sau đó tôi nghĩ rằng đó là bởi vì rõ ràng rõ ràng đòi hỏi một hình ảnh http hoặc https.

Câu hỏi đầu tiên: Có thể nhập hình ảnh từ tệp cục bộ (dường như có thể với python: https://plot.ly/python/images/)?

Dường như không thể nhúng hình ảnh cục bộ, tôi cố gắng nhập hình ảnh mà tôi đã tải lên trên Github của mình. Nhưng có vẻ như không hoạt động:

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" 
    ) 


    ) 
) 

Sự cố ở đây là gì?

Tôi đã xem ở khắp mọi nơi, đăng câu hỏi trên diễn đàn ngắn gọn (http://community.plot.ly/t/import-a-local-image-in-plot/2476, http://community.plot.ly/t/add-a-background-image/2457) nhưng tôi không tìm thấy câu trả lời của mình.

Bạn có ý tưởng gì không?

+0

Bạn có thấy https://plot.ly/~as5165/12/#code này không. Không phải R nhưng có thể giúp đỡ. Hình ảnh là base64. hãy cho chúng tôi biết bạn lấy như thế nào – pssguy

Trả lời

1

Hai thứ nhỏ cần thay đổi.

  • Các URL được trỏ đến một cái gì đó trông giống như một hình ảnh nhưng thực tế cho thấy toàn bộ trang GitHub, phụ ?raw=true đảm bảo rằng chỉ những hình ảnh được hiển thị
  • Sau khi tải hình ảnh tọa độ là bên ngoài cốt truyện

Lưu mã này qua htmlwidget vẫn không hiển thị hình ảnh vì một số sự cố CORS. Trong đoạn thứ hai, hình ảnh được mã hóa base64 và thêm vào ô. Nó không hiển thị trong RStudio nhưng trong đầu ra HTML.

Mã bên dưới tạo ra cốt truyện sau.

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" 
    ) 
    ) 
) 

Snippet cho mã hóa base64 hình ảnh.

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") 
Các vấn đề liên quan