Korzystanie tylko podstawowe shiny
functionnalities, można zbudować aplikację, gdzie można wyciągnąć instrukcja kształtuje się na prostej fabule. Używam tutaj funkcji bazy plot
, aby szybciej reagowała. Używa on zarówno parametrów kliknięcia, jak i hover z plotOutput
. Jeśli chcesz zrobić to na bardziej złożonej, wstępnie istniejącej fabule, możesz lepiej wybrać ggplot, aby lepiej zarządzać różnymi warstwami? Możesz także pomyśleć o dodaniu splajnu gładzącego do punktów. Wizualny:

Kod aplikacji:
library(shiny)
ui <- fluidPage(
h4("Click on plot to start drawing, click again to pause"),
sliderInput("mywidth", "width of the pencil", min=1, max=30, step=1, value=10),
actionButton("reset", "reset"),
plotOutput("plot", width = "500px", height = "500px",
hover=hoverOpts(id = "hover", delay = 100, delayType = "throttle", clip = TRUE, nullOutside = TRUE),
click="click"))
server <- function(input, output, session) {
vals = reactiveValues(x=NULL, y=NULL)
draw = reactiveVal(FALSE)
observeEvent(input$click, handlerExpr = {
temp <- draw(); draw(!temp)
if(!draw()) {
vals$x <- c(vals$x, NA)
vals$y <- c(vals$y, NA)
}})
observeEvent(input$reset, handlerExpr = {
vals$x <- NULL; vals$y <- NULL
})
observeEvent(input$hover, {
if (draw()) {
vals$x <- c(vals$x, input$hover$x)
vals$y <- c(vals$y, input$hover$y)
}})
output$plot= renderPlot({
plot(x=vals$x, y=vals$y, xlim=c(0, 28), ylim=c(0, 28), ylab="y", xlab="x", type="l", lwd=input$mywidth)
})}
shinyApp(ui, server)
Nadzieja to pomaga ..
To jest naprawdę wspaniałe narzędzie (+1)!Będę musiał pamiętać ten jeden. Jednak szukam narzędzia, które pozwoliłoby mi narysować więcej "wolnej ręki" ... Popraw mnie, jeśli się mylę, ale wygląda na to, że 'draw.io' ogranicza się do z góry ustalonych kształtów (tj. Kwadratów, linii , okręgi itp.). Chcę móc "bazgrać". Ponadto szukam czegoś, co pozwoliłoby mi zaznaczyć istniejącą już grafikę - taką jak notowanie krótkiej notatki na istniejącej działce. – theforestecologist