首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R:自动将图的结果存储到表中

R:自动将图的结果存储到表中
EN

Stack Overflow用户
提问于 2021-02-10 09:56:50
回答 1查看 117关注 0票数 0

我正在使用R编程语言。我正在尝试学习如何将(交互式)图形的结果存储到表中。使用以下代码,我生成了一些数据并生成了所需的交互式图形:

代码语言:javascript
复制
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”填充较小的表:

代码语言:javascript
复制
    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格式存储最终文件:

有人能教我怎么做吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-02-10 10:09:35

为了记录用户的滑块选择,您可以将反应值保存为全局变量,该变量将在闪亮的应用程序停止运行时删除。在应用程序关闭之前,用户可以使用Shiny的downloadButton()downloadHandler()函数下载这些值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66129868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档