我是R new的新手,只是通过实现以下代码链接“用流动数据和警报通知可视化”来尝试在R闪亮中进行实时数据可视化

https://datascienceplus.com/visualizing-streaming-data-with-shiny/

我正在使用两个R会话

R-session1

我正在使用以下代码

setwd("G:\\MY Project\\Jigsaw\\Deep learning\\shinyreal")
library(ggplot2)
library(dplyr)
data(diamonds)

这里使用了钻石数据集 .

head(diamonds)
# A tibble: 6 x 10
  carat cut       color clarity depth table price     x     y     z
  <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48

str(diamonds)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   53940 obs. of  10 variables:
 $ carat  : num  0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num  61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num  55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int  326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num  3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num  3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num  2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

这是将连续生成“.csv”文件的代码,并将保存在上面的文件夹中 .

while(TRUE){
  temp=sample_frac(diamonds, 0.1)
  write.csv(temp, paste0("sampled", gsub("[^0-9]","", Sys.time()), ".csv"), row.names = FALSE)
  Sys.sleep(10)  # Suspend execution of R expressions. The time interval to suspend execution for, in seconds.
}

R会话1非常好,因为“.csv”不断生成并保存在目标文件夹上 .

现在的问题是UI.R和Server.R程序 .

R session 2

我复制了以下代码

setwd("G:\\MY Project\\Jigsaw\\Deep learning\\shinyreal")


library(shiny)

ui<-fluidPage(
  tags$h2("Visualizing Streaming Data with Shiny", style = "color:blue; text-aligh: center"),
  plotOutput("plot1", height = "600px")


)
library(rsconnect)
library(shiny)
library(data.table)
library(ggplot2)
library(gridExtra)
library(readr)
IsThereNewFile=function(){  #  cheap function whose values over time will be tested for equality;
  #  inequality indicates that the underlying value has changed and needs to be 
  #  invalidated and re-read using valueFunc
  filenames <- list.files(pattern="*.csv", full.names=TRUE)
  length(filenames)
}
ReadAllData=function(){ # A function that calculates the underlying value
  filenames <- list.files(pattern="*.csv", full.names=TRUE)
  read_csv(filenames[length(filenames)])
}
server<-function(input, output, session) {
  sampled_data <- reactivePoll(10, session,IsThereNewFile, ReadAllData)    
  # 10: number of milliseconds to wait between calls to checkFunc
  output$plot1<-renderPlot({     
    sampled_data=  sampled_data()
    g1= ggplot(sampled_data, aes(depth, fill = cut, colour = cut)) +
      geom_density(alpha = 0.1) +xlim(55, 70)+ggtitle("Distribution of Depth by Cut")+
      theme(plot.title = element_text(color="darkred",size=18,hjust = 0.5),
            axis.text.y = element_text(color="blue",size=12,hjust=1),
            axis.text.x = element_text(color="darkred",size=12,hjust=.5,vjust=.5),
            axis.title.x = element_text(color="red", size=14),
            axis.title.y = element_text(size=14))     
    g2=ggplot(sampled_data, aes(carat, ..count.., fill = cut)) +
      geom_density(position = "stack")+ggtitle("Total Carat by Count")+
      theme(plot.title = element_text(color="purple",size=18,hjust = 0.5),
            axis.text.y = element_text(color="blue",size=12,hjust=1),
            axis.text.x = element_text(color="darkred",size=12,hjust=.5,vjust=.5),
            axis.title.x = element_text(color="red", size=14),
            axis.title.y = element_text(size=14))
    g3=ggplot(sampled_data, aes(carat, ..count.., fill = cut)) +
      geom_density(position = "fill")+ggtitle("Conditional Density Estimate")+
      theme(plot.title = element_text(color="black",size=18,hjust = 0.5),
            axis.text.y = element_text(color="blue",size=12,hjust=1),
            axis.text.x = element_text(color="darkred",size=12,hjust=.5,vjust=.5),
            axis.title.x = element_text(color="red", size=14),
            axis.title.y = element_text(size=14))
    g4=ggplot(sampled_data,aes(carat,price))+geom_boxplot()+facet_grid(.~cut)+
      ggtitle("Price by Carat for each cut")+
      theme(plot.title = element_text(color="darkblue",size=18,hjust = 0.5),
            axis.text.y = element_text(color="blue",size=12,hjust=1),
            axis.text.x = element_text(color="darkred",size=12,hjust=.5,vjust=.5),
            axis.title.x = element_text(color="red", size=14),
            axis.title.y = element_text(size=14))
    grid.arrange(g1,g2,g3,g4)
  })
}
shinyApp(ui, server)

在运行R session 1代码时,它会生成.csv文件(这部分没问题)

在运行R session 2代码或shinyapp时,它创建了4个静态图像,但我的动态绘图没有显示 . 我认为它无法自动从更新文件中读取数据 .

我无法找到实际问题 .

显示以下错误 .

shinyApp(ui, server)

Listening on http://127.0.0.1:5341
Parsed with column specification:
cols(
  carat = col_double(),
  cut = col_character(),
  color = col_character(),
  clarity = col_character(),
  depth = col_double(),
  table = col_double(),
  price = col_integer(),
  x = col_double(),
  y = col_double(),
  z = col_double()
)
Warning: Removed 2 rows containing non-finite values (stat_density).
Warning: Continuous x aesthetic -- did you forget aes(group=...)?
Don't know how to automatically pick scale for object of type function. Defaulting to continuous.
Don't know how to automatically pick scale for object of type function. Defaulting to continuous.
Warning: Error in FUN: object 'depth' not found
  [No stack trace available]

什么时候出现这种错误? ggplot2中的任何问题?

建议总是受到赞赏 .