我正在使用R编程语言。我正在尝试学习如何将(交互式)图形的结果存储到表中。使用以下代码,我生成了一些数据并生成了所需的交互式图形:
library(dplyr)
library(ggplot2)
library(shiny)
library(plotly)
library(htmltools)
#generate data
set.seed(123)
var = rnorm(731, 100,25)
date= seq(as.Date("2014/1/1"), as.Date("2016/1/1"),by="day")
data = data.frame(var,date)
vals <- 90:100
combine <- vector('list', length(vals))
count <- 0
for (i in vals) {
data$var_i = i
data$new_var_i = ifelse(data$var >i,1,0)
#percent of observations greater than i (each month)
aggregate_i = data %>%
mutate(date = as.Date(date)) %>%
group_by(month = format(date, "%Y-%m")) %>%
summarise( mean = mean(new_var_i), median = median(new_var_i))
#combine files together
aggregate_i$var = i
aggregate_i$var = as.factor(aggregate_i$var)
count <- count + 1
combine[[count]] <- aggregate_i
}
result_1 <- bind_rows(combine)
result_1$group = "group_a"
result_1$group = as.factor(result_1$group)
gg <-ggplot(result_1, aes(frame = var, color = group)) + geom_line(aes(x=month, y=mean, group=1))+ theme(axis.text.x = element_text(angle=90)) + ggtitle("graph1")
gg = ggplotly(gg)
######
var = rnorm(731, 85,25)
date= seq(as.Date("2014/1/1"), as.Date("2016/1/1"),by="day")
data = data.frame(var,date)
vals <- 90:100
combine <- vector('list', length(vals))
count <- 0
for (i in vals) {
data$var_i = i
data$new_var_i = ifelse(data$var >i,1,0)
#percent of observations greater than i (each month)
aggregate_i = data %>%
mutate(date = as.Date(date)) %>%
group_by(month = format(date, "%Y-%m")) %>%
summarise( mean = mean(new_var_i), median = median(new_var_i))
#combine files together
aggregate_i$var = i
aggregate_i$var = as.factor(aggregate_i$var)
count <- count + 1
combine[[count]] <- aggregate_i
}
result_2 <- bind_rows(combine)
result_2$group = "group_b"
result_2$group = as.factor(result_2$group)
gg1 <-ggplot(result_2, aes(frame = var, color = group)) + geom_line(aes(x=month, y=mean, group=1))+ theme(axis.text.x = element_text(angle=90)) + ggtitle("graph2")
gg1 = ggplotly(gg1)
#combine graphs
sub = subplot(gg, gg1, nrows = 2)
#view final graph
sub

我的目标是:从这里开始,每当用户“拖动滑块”到一个新值时,我都会尝试将两个图形的均值和中值存储到一个小表中。

使用R中的dplyr库,我能够创建一个很大的表,其中存储了"var“变量的所有可能值的均值和中位数。其想法是,这个大表将为给定值“var”填充较小的表:
fig <- plot_ly(
type = 'table',
columnwidth = c(100, 100),
columnorder = c(0, 1),
header = list(
values = c("average","group"),
align = c("center", "center"),
line = list(width = 1, color = 'black'),
fill = list(color = c("grey", "grey")),
font = list(family = "Arial", size = 14, color = "white")
),
cells = list(
values = rbind(result_1$mean, result_1$median, result_1$var, result_2$mean, result_2$median, result_2$var),
align = c("center", "center"),
line = list(color = "black", width = 1),
font = list(family = "Arial", size = 12, color = c("black"))
))
#I am not sure why the names of the columns are not appearing properly
fig现在,有没有一种方法可以把所有的东西结合在一起呢?我想以html格式存储最终文件:

有人能教我怎么做吗?谢谢
发布于 2021-02-10 10:09:35
为了记录用户的滑块选择,您可以将反应值保存为全局变量,该变量将在闪亮的应用程序停止运行时删除。在应用程序关闭之前,用户可以使用Shiny的downloadButton()和downloadHandler()函数下载这些值。
https://stackoverflow.com/questions/66129868
复制相似问题