通过自定义模式栏按钮从绘图图中下载数据,用R编码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过自定义模式栏按钮从绘图图中下载数据,用R编码相关的知识,希望对你有一定的参考价值。
我有一个绘图图(在我的情况下是用R / rmarkdown制作的,并且想要下载数据。
- 选项1是图形外的下载按钮,用于下载到数据对象(例如CSV或表格)。例如Download output filecsv或this。它有效,但不是那么整洁-使用自定义模式栏会更整洁。
选项2和3使用自定义模式栏按钮。plotly book - custom modebar button有一个很好的示例,其中包含创建自定义按钮的代码。
选项2,是作为自定义模式栏按钮的下载按钮(例如,到csv)。大概可以用javascript(或html)完成并通过,类似于下面选项3中的示例吗?有关如何执行此操作的建议?在Plotly forum上使用Dash(?)对此选项进行了一些讨论,但这已经超出了我的薪水等级。
选项3是一个链接到表(可能是带有数据表对象的附录或其他网站)的按钮,其中该数据表具有下载按钮。最后一部分,为您可以单击的数据表创建按钮很容易(请参见here)。网站链接的javascript代码应类似于以下(javascript link to website)。单击时,plotly模式栏中的默认Plotly按钮确实会将您发送到链接的网站,但不确定如何从R复制该html / javascript。
我在这段代码中缺少一些简单的东西吗?
#devtools::install_github('cpsievert/plotly_book') #for octocat image
library(tidyverse)
library(DT)
library(plotly)
data(octocat_svg_path, package = "plotlyBook")
octocat <- list(
name = "octocat",
icon = list(
path = octocat_svg_path,
transform = 'matrix(1 0 0 1 -2 -2) scale(0.7)'
),
click = htmlwidgets::JS(
"function(gd) {window.location.href = 'http://www.google.com';
}"
)
)
plot_ly() %>%
config(modeBarButtonsToAdd = list(octocat))
使用onRender
中的htmlwidgets
,您可以添加JS事件处理程序。这将把单击的数据系列打印到一个窗口。
https://plotly-r.com/js-event-handlers.html
这里是Rmd
文件中的示例。在RStudio中打开它,然后单击[编织到HTML],然后单击[在浏览器中打开]。当您单击数据系列之一时,将打开一个新窗口,其中包含csv格式的数据。
---
title: "Export Plotly Data"
output: html_document
---
```{r echo = FALSE, message = FALSE}
library(plotly)
library(htmlwidgets)
plot_ly() %>%
add_markers(x = c(0, 1), y = c(2, 3)) %>%
add_markers(x = c(4, 5), y = c(6, 7)) %>%
onRender("
function(el) {
el.on('plotly_click', function(d) {
var newWindow = window.open();
newWindow.document.write('x,', d.points[0].data.x, '<br>y,', d.points[0].data.y);
});
}
")
以上是关于通过自定义模式栏按钮从绘图图中下载数据,用R编码的主要内容,如果未能解决你的问题,请参考以下文章
R Shiny:如何从数据表中的自定义按钮调用 JavaScript 函数