У меня есть rhandsontable
с XY-координатами в моем приложении Shiny, которым я бы хотел манипулировать тремя различными способами: 1) Прямое изменение значения с помощью клавиатуры.2) Использование actionButtons
(в этом случае увеличить или уменьшить значение на 0,5).3) Использование selectInput
для «копирования / вставки» существующей точки.
Я хотел бы манипулировать этими координатами, чтобы получить интерактивный / реактивный график.
При использовании следующего кода единственной модификацией, которая учитывается на графике, является модификация из actionButton
.
Выбранный ввод вообще не учитывается, и когда я пытался datavalue$data <- dta[select$input,]
тогда actionButton
не было учтено.
Кроме того, если я вручную (с помощью клавиатуры) изменю значение на rhandsontable
, вы увидите изменение в выводе таблицы, но оно также не будетПринято во внимание в сюжете.
library(shiny)
library(rhandsontable)
library(ggplot2)
dta <- data.frame(x = c(1, 2), y = c(3, -1))
rownames(dta) <- c("a", "b")
New_Point <- data.frame(x = 0, y = 0)
######## UI
ui <- fluidPage(
fluidRow(
column(4,
fluidRow(
column(12,selectInput("select", "Select row", choices = rownames(dta)))),
fluidRow(
column(6,
rHandsontableOutput("dbTest", height = "200%")),
column(6,
actionButton("btn1", "<"),
actionButton("btn2", ">"),
br(), #space breaker
actionButton("btn3", "<"),
actionButton("btn4", ">")))
),
column(8,plotOutput("plotTest"))
)
)
######## Server
server <- function(input, output, session) {
datavalue <- reactiveValues(data=New_Point)
# Action Buttons
observeEvent(input$btn1, {
datavalue$data[1,1] <- datavalue$data[1,1]-0.5})
observeEvent(input$btn2, {
datavalue$data[1,1] <- datavalue$data[1,1]+0.5
})
observeEvent(input$btn3, {
datavalue$data[1,2] <- datavalue$data[1,2]-0.5
})
observeEvent(input$btn4, {
datavalue$data[1,2] <- datavalue$data[1,2]+0.5
})
# Test table
output$dbTest <- renderRHandsontable({
New_Point <- dta[input$select,]
rhandsontable(t(datavalue$data),
colHeaders = "New Point",
rowHeaderWidth = 50) %>%
hot_col(1, format = "0.0", colWidths = 50)
})
#Plot
output$plotTest <- renderPlot({
ggplot(dta) +
aes(x=x, y=y) +
geom_point(size = 3) +
theme_bw()+
xlim(-5, 5) +
ylim(-5,5) +
geom_point(data=datavalue$data, aes(x=x, y=y), size = 5, col = "red")
})
}
shinyApp(ui, server)
Есть ли у кого-нибудь ссылки, которые я мог бы попробовать, или какое-либо решение, чтобы иметь возможность создать сюжет с учетом этих трех различных способов манипуляции rhandsontable
в Shiny App?