在应用程序中绘制图后,我正在研究添加斜线的选项,并使这些斜线保留在图对象的一部分,即,如果x轴发生变化,则保留该斜线。我知道我可以重新定义绘制的对象,但是由于绘图有多个不同的选项,因此此方法将无法工作,因为我将有无数次不同的绘图调用,并且如果需要,我将无法跟踪所有对象改变些什么。 是否有与dlypr%>%相似的东西可以用于闪亮的图,或者具有相同影响的任何东西?
我尝试单独运行,如下面的代码所示。但是,这不会在图上添加线。
#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#
library(shiny)
x <- faithful[, 2]
x2 = x
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for cut
sidebarLayout(
sidebarPanel(
numericInput("lines",
"Vertical Line",
min = 1,
value = 60),
actionButton("add", "Add?"),
numericInput("xlimL", "Lower x", value=0),
numericInput("xlimU", "Upper x", value=50)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
data <- reactiveValues(x2 = x2)
output$distPlot <- renderPlot({
plot(data$x2, xlim = c(input$xlimL, input$xlimU))
})
observeEvent(input$add,{
abline(v = input$lines)
})
}
# Run the application
shinyApp(ui = ui, server = server)
我在添加了斜线的图之后,当我更改x限制时,它与图保持一致,并且无需多次renderPlot调用即可执行此操作。
谢谢!
答案 0 :(得分:1)
因此,可以通过将数据设为reactiveValue
并添加lines = NULL
来做到这一点,但是服务器部分如下:
server <- function(input, output) {
data <- reactiveValues(x2 = x2, lines = NULL)
output$distPlot <- renderPlot({
plot(data$x2, xlim = c(input$xlimL, input$xlimU))
abline(v = data$lines)
})
observeEvent(input$add,{
data$lines = c(data$lines, input$lines)
})
}