多くの検索と調査の後、私はこの作業をどのように行うかわかりません。基本的に私がしたいのは、ggplot_buildを使ってプロットで生成されたデータにアクセスすることです。しかし、プロットはrenderPlotを通してShinyで生成されるので、私はそれをアプリケーションのどこかにアクセスできません。Shiny RのrenderPlotからggplot_buildにアクセスする必要があります
私が思いついたもっとも近いことは、空のreactiveValueを宣言し、毎回私のプロット関数を追加することです。こうすることで、ggplot_buildからデータを取得するために必要なときにプロットオブジェクトにアクセスできるようになります。
エラーは発生しませんが、コードを実行するとプロットは生成されません。コードそのものは以下の通りですが、これはプロット自体の非常に単純な例であることに注意してください。フルバージョンでは、geom_ termsなどの追加可能性が大幅に増えます。どんな助けでも大歓迎です。前もって感謝します。
限り私のデータとして、それはCSV形式でだと、このようなものになります。
Year,Field,Company,Hybrid,Yield,Moisture,Erect,DoP,DoH,RM,Stand,PPA
1934,Alhambra,Champion,White Pearl,9.1,39.5,NaN,2-May,20-Nov,NaN,NaN,NaN
1944,Galesburg,Pioneer,334,92.7,18.3,99.3,20-May,8-Nov,NaN,NaN,NaN
1945,Sheldon,Funk,G-169,70.6,24.3,39,25-May,8-Nov,NaN,NaN,NaN
1946,Galesburg,Doubet,D-42,100.8,22,94,24-May,8-Nov,NaN,NaN,NaN
1949,DeKalb,Ferris,F-11,51.3,18.4,91,23-May,16-Nov,NaN,72,NaN
とコード:
Variable_Extractor <- function(dataset) {
vars = names(dataset)
for (i in vars) {
if (is.factor(dataset[[i]][1]) == TRUE) {
vars = vars[vars != i]
}
}
return(vars)
}
Identify_Min_Max <- function(dataset, var) { #var must be a string column name
a = min(dataset[[var]], na.rm = TRUE)
b = max(dataset[[var]], na.rm = TRUE)
return(c(a,b))
}
ui <- fluidPage(
titlePanel('Illinois Yield Trials'),
sidebarLayout(position = 'left',
sidebarPanel(
selectInput('var', 'Choose variable',
c('Choose one' = '', Variable_Extractor(agridata))),
uiOutput('histslider'),
numericInput('bin_width', 'Enter binwidth',
value = 5, min = 0, max = 1000)),
mainPanel(div(style = "position:relative",
plotOutput('plot')))
)
)
server <- function(input, output) {
output$histslider <- renderUI({
valhist <- Identify_Min_Max(agridata, toString(input$var))
sliderInput(inputId = 'sliderhist',
label = paste("Select values for ", input$var, sep = ''),
min=valhist[1],
max=valhist[2],
value=valhist,
sep= '')
})
plt <- reactiveValues()
output$plot <- renderPlot({
plt$p <- ggplot()
agridatasub <- subset(agridata, agridata[[input$var]] >= input$sliderhist[1] & agridata[[input$var]] <= input$sliderhist[2])
plt$p <- plt$p + geom_histogram(data=agridatasub, aes_string(x=input$var), binwidth = input$bin_width,
color = 'black', fill = 'gray75')
return(plt$p)
})
}
shinyApp(ui=ui, server=server)
はあなたの助けをありがとう! – Sydney