这是为
这不能按预期工作 - 索引不再匹配:
f(ggplot(myData, aes(x=x, y=y)) + geom_point(aes(text=label, color=category)))
情节对象不同,似乎 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";}]}
然后由
检索 URLwindow.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