添加超链接到闪亮图

2023-11-25

我制作了一个闪亮的应用程序,使用不同的绘图解决方案来渲染图表ggplot2关于闪亮(我最喜欢的是plotly).
我喜欢用户可以与图表交互的事实:plotly用户可以放大图表或单击点(例如散点图)并访问它们的值。

我想将散点图上的每个点链接到一个 URL(不显示它),并允许用户单击一个点,这将触发激活打开新网页的超链接。

如果我可以使用情节来做到这一点,那就太棒了,但我对任何其他类型的技术持开放态度(ggvis,dygraph, etc.).


闪亮的应用程序使用plotly 的 postMessage API or 绘图.js,两者都暴露click, hover, and zoom事件。这些事件尚未作为底层闪亮服务器的回调公开,但可以通过自定义 JavaScript 访问它们,您可以在闪亮中为自己提供服务。

以下是点击事件的示例:

Adding click events to graphs in Shiny

ui.R

library(shiny)
library(plotly)

shinyUI(fluidPage(
  mainPanel(
    plotlyOutput("trendPlot"),
    tags$head(tags$script(src="clickhandler.js"))
  )
))

server.R

library(shiny)
library(plotly)

x = c(1, 2, 3)
y = c(4, 2, 4)
links = c("https://plot.ly/r/", 
          "https://plot.ly/r/shiny-tutorial", 
          "https://plot.ly/r/click-events")

df = data.frame(x, y, links)

shinyServer(function(input, output) {

  output$trendPlot <- renderPlotly({
    # Create a ggplot
    g = ggplot(data=df, aes(x = x, y = y)) + geom_point()
    # Serialize as Plotly's graph universal format
    p = plotly_build(g)
    # Add a new key, links, that JS will access on click events
    p$data[[1]]$links = links
    p

    # Alternatively, use Plotly's native syntax. More here: https://plot.ly/r
    # plot_ly(df, x=x,y=y,links=links)
  })
})

www/clickhandler.js

$(document).ready(function(){
// boiler plate postMessage plotly code (https://github.com/plotly/postMessage-API)
var plot = document.getElementById('trendPlot').contentWindow;

pinger = setInterval(function(){
    plot.postMessage({task: 'ping'}, 'https://plot.ly')
}, 100);

var clickResponse = function(e) {
     plot = document.getElementById('trendPlot').contentWindow;
    var message = e.data;
     console.log( 'New message from chart', message );
    if(message.pong) {
        // tell the embedded plot that you want to listen to click events
        clearInterval(pinger);
        plot.postMessage({
              task: 'listen', events: ['click']}, 'https://plot.ly');
          plot.postMessage({
            task: 'relayout',
            'update': {hovermode: 'closest'},
        },
        'https://plot.ly');
    }
    else if(message.type === 'click') {
        var curveNumber = message['points'][0]['curveNumber'],
            pointNumber = message['points'][0]['pointNumber'];

        var link;
        var traces = message.points[0].data;
        if(traces !== null && typeof traces === 'object') {
            link = traces.links[pointNumber];
        } else {
            link = traces[curveNumber].links[pointNumber];
        }

        console.log(link);

        var win = window.open(link, '_blank');
        win.focus();
    }
};

window.addEventListener("message", clickResponse, false);

});

以下是一些可能有用的资源:

  • 使用 R 在 javascript 中向绘图添加自定义交互性
  • 尤其在 JavaScript 中绑定点击事件
  • 开始使用闪亮和情节
  • Plotly postMessage API用于向托管绘图添加自定义交互性
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加超链接到闪亮图 的相关文章

  • stat_function 从函数生成平线

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph
  • 改进R中从google获取股票新闻数据的功能

    我已经编写了一个函数来从 Google 获取和解析给定股票代码的新闻数据 但我确信有一些方法可以改进它 对于初学者来说 我的函数返回一个 GMT 时区的对象 而不是用户当前的时区 如果传递的数字大于 299 它就会失败 可能是因为 goog
  • 如何在基数 R 中进行分组

    我想使用以下 SQL 查询来表达base R 没有任何特定的包 select month day count as count avg dep delay as avg delay from flights group by month d
  • dplyr 中的标准评估:全局环境中的函数出现“无法找到函数”错误

    我试图在 dplyr 中对全局环境中的函数使用标准评估 但出现 无法找到函数 错误 这是一些代码 create data frame df lt data frame x rnorm 10 y rnorm 10 define arbitra
  • R参考类问题

    我正在尝试在 R 中创建一个简单的参考类 这是我的代码 R 初学者 MyClass lt setRefClass MyClass fields list a numeric b numeric methods list initialize
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • 按组计算连续行中的值之间的差异

    这是我的一个df 数据框 group value 1 10 1 20 1 25 2 5 2 10 2 15 我需要按组计算连续行中的值之间的差异 所以 我需要一个结果 group value diff 1 10 NA because the
  • 如果条目出现次数少于 x 则删除数据框中的行

    我有以下数据框 称之为 df 它是由三个向量组成的数据框 姓名 年龄 和 邮政编码 df Name Age ZipCode 1 Joe 16 60559 2 Jim 20 60637 3 Bob 64 94127 4 Joe 23 9412
  • 更改 pander 中的默认对齐方式 (pandoc.table)

    我目前正在切换到pander对于我的大部分时间knitr markdown格式化 因为它提供了如此出色的pandoc支持 我不太满意的一件事是默认的居中对齐 营销人员可能会喜欢它 但对于技术报告来说这是一个可怕的事情 使用的最佳选择Hmis
  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • 使用 RDCOMClient 搜索 Outlook 收件箱

    我尝试使用 RDCOMClient 在 Outlook 收件箱中搜索电子邮件中的特定主题 然后获取附件 我在一封电子邮件上进行了这项工作 但由于主题包含日期元素 我需要搜索成为一个类似的子句 但不太清楚这适合我的下面的查询 outlook
  • 如何从 R 数据框中提取关键字

    我是 R 中文本挖掘的新手 我想从数据框的列中删除停用词 即提取关键字 并将这些关键字放入新列中 我尝试制作一个语料库 但它对我没有帮助 df C3是我目前拥有的 我想添加栏目df C4 但我无法让它工作 df lt structure l
  • 如何将同一行中以逗号分隔的值拆分到R中的不同行

    我有一些数据来自谷歌表格 https forms gle rGQQL3tvA1PrE4dD8我想拆分以逗号分隔的答案 and 复制参与者的 ID 数据如下 gt head data names Q2 Q3 Q4 1 PART 1 fruit
  • R中整数类和数字类有什么区别

    我想先说我是一个绝对的编程初学者 所以请原谅这个问题是多么基本 我试图更好地理解 R 中的 原子 类 也许这适用于一般编程中的类 我理解字符 逻辑和复杂数据类之间的区别 但我正在努力寻找数字类和整数类之间的根本区别 假设我有一个简单的向量x
  • 手动设置scale_fill_distiller()的比例

    我正在尝试制作一系列图表进行比较 举例来说 我想使用iris数据集来制作这样的图 其中我已过滤以仅查看 setosa 物种 library ggplot2 library dplyr iris gt filter Species setos
  • 如何自动启动我的 ec2 实例、运行命令然后将其关闭?

    我想每周对 redshift postgres 数据库中的数据运行一次机器学习模型 我使用以下命令将 R 脚本设置为休息 apiplumbr然后我将其设置为一项任务来管理pm2 我有它 所以任务会在ec2实例启动然后继续运行 要让 R 脚本
  • 按特定样本前缀对列名称向量进行子集化

    假设我有一个如下所示的数据框 ca01 lt c 1 10 ca02 lt c 2 11 ca03 lt c 3 12 stuff 1 lt rep test 10 other lt rep 9 10 data lt data frame
  • R - 与 SpatialPolygonsDataFrame 对象相交的 SpatialLinesDataFrame 列表的嵌套循环

    我有一系列需要完成的步骤SpatialLinesDataFrame 此处的 线 基于对象与多特征中各个特征的关系SpatialPolygonsDataFrame 多边形 对象 简而言之 每个线列表元素源自单个面要素内部 并且可能会也可能不会
  • 如何绘制堆积比例图?

    我有一个数据框 x lt data frame id letters 1 3 val0 1 3 val1 4 6 val2 7 9 id val0 val1 val2 1 a 1 4 7 2 b 2 5 8 3 c 3 6 9 我想绘制一个
  • 如何绘制大时间序列(数千次给药次数/药物剂量)?

    我正在尝试绘制医院中如何开出单一药物的图解 在这个虚拟数据库中 我在 2017 年 1 月 1 日之后遇到了 1000 名患者 绘图的目的是了解该药物的给药模式 在接近入院 出院或患者住院期间是否更频繁 高剂量给药 Get random d

随机推荐

  • 此表单不安全自动填充仅在 Chrome 中关闭

    I get this error when trying to fill the form from chrome in my website 这是我提交表格后的结果 这种情况在任何其他浏览器中都不会发生 我需要做什么才能确保表单安全 我已
  • glDrawArrays 与 glDrawElements

    好吧 我仍然在努力让它发挥作用 我的代码的重要部分是 def init self vertices normals triangles self bufferVertices glGenBuffersARB 1 glBindBufferAR
  • Android:跟踪鼠标指针移动

    假设我使用通用鼠标 是否可以在android中跟踪鼠标指针的X和Y坐标 你需要一个OnGenericMotionListener OnGenericMotion MotionEvent me if me getToolType 0 Moti
  • 如何在Python脚本运行时操作图形?

    介绍 因为我来自matlab 我习惯了交互式界面 其中脚本可以在运行时更新图形 在处理过程中 每个图形都可以调整大小甚至关闭 这可能意味着每个图形都在自己的线程中运行 这显然不是这样的绘图库 IPython可以使用magic命令模仿Matl
  • Laravel 无法在 404 错误页面查看用户是否登录

    我创建了一个自定义 404 错误页面 并使用 app layout 来包装它 但这很奇怪 因为当我收到 404 错误页面时 即使我已登录 也会看到登录和注册链接 这是为什么 update 当我登录我的页面并写入不存在的路由时 我得到带有扩展
  • 使用 OpenCV 和 Python 查找数独网格

    我正在尝试使用 OpenCV 检测数独谜题中的网格 但我在最后一步中遇到了麻烦 我猜 我正在做的是 对图像进行下采样 Blur it 应用高通滤波器 双边 使用自适应阈值对图像进行阈值处理 一些膨胀和腐蚀 所有这些给了我以下图像 从现在开始
  • 无法找到哈希字符串“android-25”的目标

    我有 Android Studio 2 2 我正在尝试打开一个项目 但收到错误 无法找到带有哈希字符串 android 25 的目标 在错误消息下方 我看到一个链接 安装缺少的平台和同步项目 如果我单击此链接 我会收到另一个错误 其中显示
  • 使用 VBA 将条件格式应用于一系列单元格

    我想知道如何访问条件格式中标题为 适用于 的列并输入我自己的条件 我提供了一个屏幕截图以供更好的参考 我在条件格式中添加语法的代码是 With Selection FormatConditions Delete FormatConditio
  • 如何解析 Zend URL 中的参数?

    我正在尝试从 ZF REST URL 中提取 GET 参数 这不是当前请求 我不想调用 URL 或执行路由 我只需要参数 我正在寻找像 parse url 这样的实用函数 但适用于 Zend REST 格式 有没有 或者我必须重新发明轮子
  • 如何将我的 swift 1.2 项目迁移到 2.0?

    我有一个项目是在 swift 推出时开发的 但最近 Apple 推出了新版本的 swift 2 0 和 xCode 7 0 那么我如何将我的项目从 swift 1 2 迁移到 2 0 呢 在新的 Xcode 7 beta 中 转到编辑菜单
  • 为什么挑战-响应方法对于忘记密码来说不是一个糟糕的解决方案?

    我的公司正在开发在线人力资源和薪资应用程序 其中安全访问至关重要 我清楚如何锁定大多数身份验证 授权过程 但 忘记密码 页面除外 我最初的计划是要求用户输入电子邮件地址和对先前选择 输入的质询问题的答复 并将临时密码邮寄到列出的电子邮件 假
  • 如何解决:npm run build/dev: 缺少脚本?

    我正在尝试运行节点 但由于某种原因 节点的本地 npm 安装无法正常工作 包裹在那里 npm run dev npm ERR Darwin 15 4 0 npm ERR argv usr local Cellar node 5 6 0 bi
  • 什么取代了 .Net Core 中的 WCF?

    我习惯于创建 Net Framework 控制台应用程序并公开Add int x int y 使用类库 Net Framework 从头开始通过 WCF 服务实现功能 然后 我使用控制台应用程序在服务器内代理调用此函数 但是 如果我使用控制
  • 如何从 ASP.NET MVC 中的基本控制器连接通用代码

    我的 ASP NET MVC 应用程序是一个更大的 ColdFusion 应用程序的一小部分 该应用程序很快就会被完全替换 我通过 cookies 从 ColdFusion 部分传递一些参数 并且需要在运行每个操作之前检查此信息 如果信息丢
  • 将外部 jar 设置为 hadoop 类路径

    我正在尝试将外部 jar 设置为 hadoop 类路径 但到目前为止还没有运气 我有以下设置 hadoop 版本Hadoop 2 0 6 alpha 颠覆https git wip us apache org repos asf bigto
  • UIStoryboard 找不到带有标识符的视图控制器

    我有一个 ios 应用程序 使用带有一堆视图控制器的故事板 After Adding a new ViewController and configured the identify Storyboard ID 我尝试使用以下代码实例化新的
  • Vim - 删除直到行中最后一次出现字符

    我正在想办法dt or df字符串中最后一次出现的字符 例如 假设我有以下行 foo not relevant text bar If I f df 我预计会得到foo relevant text bar但我想得到foo bar Using
  • 提高 Pandas DataFrame 上的行追加性能

    我正在运行一个基本脚本 该脚本循环嵌套字典 从每个记录中获取数据 并将其附加到 Pandas DataFrame 中 数据看起来像这样 data SomeCity Date1 record1 record2 record3 Date2 它总
  • 将 RabbitMQ 的消息转换为 string/json

    我目前正在努力解决一个相当简单的问题 我想从 RabbitMQ 接收消息并将其转换为字符串 或稍后转换为 json 对象 但我得到的只是字节 The Message对象以这种方式将自身显示为字符串 Body cityId 644 ID nu
  • 添加超链接到闪亮图

    我制作了一个闪亮的应用程序 使用不同的绘图解决方案来渲染图表ggplot2关于闪亮 我最喜欢的是plotly 我喜欢用户可以与图表交互的事实 plotly用户可以放大图表或单击点 例如散点图 并访问它们的值 我想将散点图上的每个点链接到一个