【发布时间】:2022-12-03 13:51:07
【问题描述】:
有没有办法将鼠标悬停在 plotly 图中的数据上,然后能够单击文本中的超链接选项?
有许多问题(例如,here、here)允许用户单击一个点并将您带到与该点关联的 url,但在这些解决方案中,它仅限于一个 url。例如:
library(ggplot2)
library(plotly)
library(htmlwidgets)
mydata <- data.frame( xx = c(1, 2), yy = c(3, 4),
website = c("https://www.google.com",
"https://www.r-project.org/"),
link = c(
"https://www.google.com",
"https://www.r-project.org/"))
g <- ggplot(mydata, aes(x = xx, y = yy,
text = paste0("xx: ", xx, "\n",
"website link: ", website),
customdata = link)) +
geom_point()
g
p <- ggplotly(g, tooltip = c("text"))
p
onRender(
p, "
function(el) {
el.on('plotly_click', function(d) {
var url = d.points[0].customdata;
window.open(url);
});
}
"
)
然后你可以点击第二个点,它会带你到https://www.r-project.org/:
我想要的是能够在两个或多个链接之间进行选择(即单击文本框中的超链接):
mydata <- data.frame( xx = c(1, 2), yy = c(3, 4),
website = c("https://www.google.com",
"https://www.r-project.org/),
website2 = c(" https://www.reddit.com/",
"http://stackoverflow.com/"),
link = c(
"https://www.google.com, https://www.reddit.com/",
"https://www.r-project.org/, http://stackoverflow.com/"))
g <- ggplot(mydata, aes(x = xx, y = yy,
text = paste0("xx: ", xx, "\n",
"website link: ", website, "\n",
"Second website: ", website2),
customdata = link)) +
geom_point()
g
p <- ggplotly(g, tooltip = c("text"))
p
我感觉这无法通过 text 或 plotly 的 tooltip 实现,但也许有不同的解决方法,例如使用javascript(我不熟悉)。
有任何想法吗?
谢谢
【问题讨论】:
-
您可以在悬停框中放置一个链接,但问题是您将无法单击它,因为只要您不再悬停该点,该框就会消失。
-
所以你不认为有任何聪明的解决方法吗?也许唯一的选择是将绘图包含在闪亮的应用程序中,并通过单击其中的一个点来打开/过滤带有不同面板中超链接列表的表格......
-
我刚刚用谷歌搜索,但一无所获。我也尝试了
plot_doubleclick事件,但它不起作用。事实上,这在 Shiny 中是可行的。
标签: javascript r ggplot2 plotly ggplotly