我的Shiny App中有一个带有XY坐标的rhandsontable
,我想用三种的不同方式进行操作:
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)
有人考虑到Shiny App中这三种不同的rhandsontable
操作方式,可以尝试使用我的参考书,也可以通过任何解决方案生成图吗?