selectizeInput
で表示する2番目の変数を選択しているときにカーブの再設定を防止したいと思います。たとえば、下のコードでは、selectizeInputのデータセットをcyl(6)と選択し、曲線から1つのポイントを除外して、cyl(4)の第2の値を選択します。前回のカーブはcyl = 6でリセットされ、リセットされます(除外されたポイントは再びと表示されます)。Ggplot:plot - interaction - exclude - >除外ポイントのリセットを防止する
この現象を防止する方法はありますか?第2変数を選択する際に除外ポイントは「除外」のままですか?
例コード:
library(ggplot2)
library(shiny)
ui <- fluidPage(
fluidRow(
column(width = 6,
plotOutput("plot1", height = 350,
click = "plot1_click"),
selectizeInput("valuecyl", "Select value of cyl:", choices=unique(mtcars$cyl), multiple = TRUE))
)
)
server <- function(input, output) {
# For storing which rows have been excluded
vals <- reactiveValues()
data_df <- reactive({
data <- mtcars
data <- data[data$cyl %in% input$valuecyl, ]
vals$keeprows = rep(TRUE, nrow(data))
data
})
output$plot1 <- renderPlot({
data<- data_df()
keep <- data[ vals$keeprows, , drop = FALSE]
exclude <- data[!vals$keeprows, , drop = FALSE]
print(keep)
ggplot(keep, aes(wt,mpg,colour=as.factor(cyl))) + geom_point(data=keep) + geom_line(data=keep) +
geom_point(data = exclude, shape = 21, fill = NA, color = "black", alpha = 0.25)
})
# Toggle points that are clicked
observeEvent(input$plot1_click, {
data <- data_df()
res <- nearPoints(data, input$plot1_click, allRows = TRUE)
vals$keeprows <- xor(vals$keeprows, res$selected_)
})
}
shinyApp(ui, server)
素晴らしい!ありがとう、それは完璧に動作します! –
反応性のあるデータセット(この場合は 'mtcars()')を受け取ったとき、データセットを 'observeEvent'の内部で反応させておくことができますか? –
あなたのアプリの別の部分から反応性のあるデータセットを取得した場合、 'observeEvent'は反応的な環境であるため、' vals $ data = dataset()[dataset()$ cyl%in%input $ valuecyl、] '。また、 'reactiveValues'の初期値を更新する必要があります。 – NicE