▼(ひらく)...
▲(とじる)...
補足説明:ui.R で取得した情報は、input$Prefecture で受け取っているが、この変数は、
renderPlotly の中で使用しないとエラーになる。実際、受け取った情報を活用して、画面
を更新するのは、renderPlotly の中だけである。
library(shiny)
library(plotly)
# Define server logic required to draw a histogram
shinyServer(function(input, output) {
Japan <- read.csv("https://covid19.mhlw.go.jp/public/opendata/newly_confirmed_cases_daily.csv", sep=",")
Japan$Date <- as.Date(Japan$Date)
output$distPlot <- renderPlotly({
prefec <- input$Prefecture
Pref <- data.frame(date=as.Date(Japan$Date[Japan$Prefecture==prefec]),
num=Japan$Newly.confirmed.cases[Japan$Prefecture==prefec])
runmin5 <- runningmean(Pref$date, Pref$num, 5)
runmin7 <- runningmean(Pref$date, Pref$num, 7)
runmin9 <- runningmean(Pref$date, Pref$num, 9)
p <- plot_ly( Pref, x=Pref$date, y=Pref$num, type="scatter", mode="lines", name=prefec)
p <- add_trace(p, runmin5, x=runmin5$x, y=runmin5$y, mode="lines", name="5 Days Running Mean")
p <- add_trace(p, runmin9, x=runmin9$x, y=runmin9$y, mode="lines", name="9 Days Running Mean")
p <- add_trace(p, runmin7, x=runmin7$x, y=runmin7$y, mode="lines", name="7 Days Running Mean")
})
})
### 日付のリストを作る関数(昨日まで)
dayslist <- function( zeroday = "2020-01-16", lengthdays = unclass(Sys.Date()) - unclass(as.Date(zeroday)) -1 ){
# lenday <- 24*3600
# days <- as.character(as.POSIXlt(zeroday)+(0:lengthdays)*lenday)
days <- as.character(as.Date(zeroday)+(0:lengthdays))
return(days)
}
### 移動平均を求める関数
### 平均を計算するデータの個数は奇数である必要がある。
runningmean <- function(x,y,num=7){
result <- rep(0, length(y)-(num-1))
for( i in 1:num){
result <- result + y[i:(length(y)-(num-i))]
}
return (data.frame(x=x[(num+1)/2 + 1:(length(y)-(num-1))], y=result/num ))
}