2017-10-16 6 views
0

"HTML-Widgets können nicht im Klartext dargestellt werden" Wenn ich versuche, dies auszuführen, indem Jupyter:Fehler:

library(leaflet) 

m <- leaflet() %>% 
    addTiles() %>% # Add default OpenStreetMap map tiles 
    addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R") 
m # Print the map 

ich diesen Fehler:

HTML widgets cannot be represented in plain text (need html).

Wie vorgeschlagen here ich versucht habe:

library(plotly) 
embed_notebook(m) 

aber ich bekomme:

Error in UseMethod("embed_notebook"): no applicable method for 'embed_notebook' applied to an object of class "c('leaflet', 'htmlwidget')

Wie kann ich diese Art von Diagramm zeichnen?

Antwort

1

embed_notebook ist speziell für Plotobjekte definiert. Ich würde die Dokumentation durchsehen, um zu sehen, ob das Flugblatt seine eigene äquivalente Funktion hat.

Da es sich um ein HTML-Widget handelt, können Sie es auch als HTML-Datei speichern und diese Datei dann in einen iFrame in Ihrem Notebook einbetten. Dies kann mit so etwas wie

library(IRdisplay) 
htmlwidgets::saveWidget(m, "m.html") 
display_html('<iframe src="m.html" width=100% height=450></iframe>') 

erreicht werden, wenn Sie nicht über eine Reihe von HTML-Dateien in Ihrem Ordner behalten möchten, können Sie auch die rohe html Ihres Widgets in Ihre iframe eingeben und löschen Sie sie

mit
rawHTML = base64enc::dataURI(mime = "text/html;charset=utf-8", file = "m.html") 
display_html(paste("<iframe src=", rawHTML, "width=100% height=450></iframe>", sep = "\"")) 
unlink("m.html") 

Aber ich habe festgestellt, dass dies einen Fehler mit der neuesten Version von Chrome generiert.

Wenn es hilft, ich zusammengeschustert die folgende Funktion aus dem Quellcode von embed_notebook

embed = function(x, height) { 
    library(IRdisplay) 
    tmp = tempfile(fileext = ".html") 
    htmlwidgets::saveWidget(x, tmp) 
    rawHTML = base64enc::dataURI(mime = "text/html;charset=utf-8", file = tmp) 
    display_html(paste("<iframe src=", rawHTML, "width=100% height=", height, "id=","igraph", "scrolling=","no","seamless=","seamless", "frameBorder=","0"></iframe>", sep = "\"")) 
    unlink(tmp) 
} 

Aber auch hier kann dies nicht für Chrome arbeiten.

+1

#cromulent Das Problem ist, dass 'htmlwidgets :: saveWidget (m," m.html ")' die HTML-Datei nicht erstellen. – Simone

+0

@Simone Ich entschuldige mich, wenn das beleidigend ist, aber haben Sie das Paket htmlwidgets in Ihrer Version von R installiert? Wenn du das tust, bin ich nicht erfahren genug, um zu wissen, was das Problem an deinem Ende verursachen könnte. – cromulent

+0

Ja, ich habe 'htmlwidgets' Paket installiert – Simone