我有一个R-Shiny应用程序,该应用程序的图实现了交互式操作:单击,悬停(悬停将鼠标移到该图上,可以通过闪亮检测到)。为了给出一个想法,我在下面发布了一个简化的Shinyapp,它具有对我来说有问题的功能,即交互式绘图。(它是从我的一个老答案采取这里)
它实际上运行良好,但是我需要人们从智能手机上使用它。问题是:我们在智能手机中所做的手指移动被手机解释为在页面上缩放或在页面上滚动,而不是鼠标选择或情节上的鼠标移动(悬停)。
我可以在应用程序上实现将触摸事件转换为鼠标事件的代码(java?css?)的修改,还是智能手机上的选项/手势可以实现类似鼠标的移动?
非常感谢。码:
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(); …Run Code Online (Sandbox Code Playgroud) 我有一个客户希望能够在 Rshiny 中“徒手”绘制绘图 (ggplot) 图表。我说在绘图上使用套索选择按钮,但他们不高兴的是,如果您单击图表上的其他位置,它会删除第一个套索。
通过这篇文章,我能够制作一个可以绘制的 ggplot。然而,我无法让它与情节一起工作,因为我不知道下面用户界面中的悬停选项的等效项。我希望得到一些关于如何用绘图来做到这一点,如何改进代码以使其更快,和/或如何不让它从 (1,1) 的任意值开始的输入。
可以理解的是,只有当数据完全是数字时,这才有效。如果说数据中的第一列是 c("a","b","c") 而不是像下面那样的 c(1,2,3) ,是否有办法做到这一点。
注意:第一次单击该线从 (1,1) 开始,因为 ggplot 需要一个值来绘制图表,但反应性输入需要一个图表。为了绕过这个循环,我只是将列放在 c(1,vals$x)...希望这是有道理的。
library(shiny)
library(tidyverse)
ui <- fluidPage(
actionButton("reset", "reset"),
plotOutput("plot",
hover=hoverOpts(id = "hover", delay = 300, 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 …Run Code Online (Sandbox Code Playgroud)