我有一個ggplot2
情節,然后我將其傳遞給情節,然后html
使用 Rmarkdown 輸出。我正在嘗試設定一個 JS 函式以在單擊點時打開基礎 URL。我的問題與這個問題非常相似(將 onclick 打開超鏈接事件添加到在 R 中創建的 html 小部件),但分面似乎改變了點的順序,并且沒有一個可用的解決方案起作用。
這篇文章(點擊 ggplot/plotly 圖表打開超鏈接)似乎也很相關,我嘗試實施建議的解決方案,但它不起作用。
資料示例如下所示:
library(ggplot2)
library(plotly)
library(htmlwidgets)
library(htmltools)
myData <- data.frame(x=c(1,2,3, 4, 6), y=c(3,2,1, 5, 4), type = c("a", "b", "c", "a", "b"), urls=c("https://www.google.com/", "http://stackoverflow.com/", "https://www.r-project.org/", "https://www.reddit.com/", "https://www.yahoo.com/"))
ggp <- ggplot(data=myData, aes(x=x, y=y))
geom_point()
facet_wrap(type ~ .)
ply <- plotly_build(ggp)
ply$elementId <- "PlotlyGraph"
# javascript <- HTML(paste("var myPlot = document.getElementById('PlotlyGraph');
# myPlot.on('plotly_click', function(data){
# var urls = ['", paste(myData$urls, collapse = "', '"), "'];
# window.open(urls[data.points[0].pointNumber],'_blank');
# });", sep=''))
javascript <- HTML(paste("var myPlot = document.getElementById('PlotlyGraph');
myPlot.on('plotly_click', function(data){
var urls = ", toJSON(split(myData, myData$type)), ";
window.open(urls[data.points[0].data.name][data.points[0].pointNumber]['urls'],'_blank')
});", sep=''))
ply <- prependContent(ply, onStaticRenderComplete(javascript))
ply
我認為問題在于ggplot
沒有按照 JS 預期的資料順序放置,但我不知道如何處理這種情況。有任何想法嗎?
uj5u.com熱心網友回復:
對我有用的一個選項是遵循情節書中customdata
的示例,您可以在其中通過屬性傳遞 url 。我還在 Rmarkdown 檔案中進行了測驗。我遇到的唯一問題是,在 RStudio 查看器中,單擊事件不適用于第一個點(但適用于所有其他點),但在瀏覽器中打開時可以正常作業:
library(ggplot2)
library(plotly)
library(htmlwidgets)
myData <- data.frame(
x = c(1, 2, 3, 4, 6), y = c(3, 2, 1, 5, 4),
type = c("a", "b", "c", "a", "b"),
urls = c("https://www.google.com/", "http://stackoverflow.com/", "https://www.r-project.org/", "https://www.reddit.com/", "https://www.yahoo.com/")
)
ggp <- ggplot(data = myData, aes(x = x, y = y, customdata = urls))
geom_point()
facet_wrap(type ~ .)
ply <- ggplotly(ggp)
onRender(
ply, "
function(el) {
el.on('plotly_click', function(d) {
var url = d.points[0].customdata;
window.open(url);
});
}
")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/497769.html
標籤:javascript r ggplot2 情节地
上一篇:如何在Javascript中的嵌套物件結構中查找特定資料?
下一篇:如何在字典串列中找到值的頻率?