单击 ggplot/plotly 图表打开超链接图表、单击、超链接、plotly

2023-09-06 07:32:15 作者:有一种思念叫做避而不见

这是为

这不能按预期工作 - 索引不再匹配:

f(ggplot(myData, aes(x=x, y=y)) + geom_point(aes(text=label, color=category)))
实战案例 贷款分析之plotly VS ggplot2

情节对象不同,似乎 pointNumber 不再保存所有点的绝对索引,而是(颜色)分组内的索引.

关于如何调整示例使其适用于一般用例以及颜色/填充分组的任何想法?

解决方案

plotly_click 事件提供数据跟踪的名称.data为点击事件信息data.points[0].data.name 是跟踪/类别名称

我们可以通过 category (就像 aes 所做的那样)将其拆分并传递给我们的 JavaScript 函数

,而不是传递展平的数据框

var urls = ", toJSON(split(myData, myData$category)), ";

这给了我们以下 JSON

{其他":[{x":3,y":1,标签":R",类别":其他","urls":"http://r-project.org"}],搜索":[{x":1,y":3,标签":Google",类别":搜索",网址":http://google.de"},{x":2,y":2,标签":必应",类别":搜索",网址":http://bing.com";}]}

然后由

检索 URL

window.open(urls[data.points[0].data.name][data.points[0].pointNumber]['urls'],'_blank');

即从提供的 JSON 中:我们从第一个(也是唯一的)点击点 (data.points[0]) 获取跟踪的名称 (data.name) 及其 pointNumber(即轨迹中的第 n 个点).

完整代码

库(ggplot2)图书馆(情节)图书馆(htmlwidgets)库(htmltools)库(jsonlite)myData