ggvisOutput是否具有类似于plotOutput的单击选项

亚历克斯

这是从联机帮助获取的一些闪亮代码,它们创建了一个绘图,您可以单击该绘图以获取(x, y)坐标。

library(shiny)

ui <- basicPage(
  plotOutput("plot1", click = "plot_click"),
  verbatimTextOutput("info")
)

server <- function(input, output) {
  output$plot1 <- renderPlot({
    plot(mtcars$wt, mtcars$mpg)
  })

  output$info <- renderText({
    paste0("x=", input$plot_click$x, "\ny=", input$plot_click$y)
  })
}

shinyApp(ui, server)

我很想知道是否有可能用ggvisOutput而不是对象来做到这一点plotOutput

米哈尔·马伊卡(Michal Majka)

您想通过单击来识别点,并且至少有两种方法可以实现ggvis

  • 使用handle_click如在下面的第一个例子

  • 使用add_tooltip如在第二示例


------------------------------------------------- handle_click- -------------------------------------------------- ------

1)在第一个示例中,您必须定义reactiveValues对象,例如,vals在服务器端。

vals <- reactiveValues(data = NULL)  

2)然后handle_click使用管道运算符函数添加到ggvis对象。handle_click包含一个匿名函数,该函数获取数据并将其保存在对象中vals

handle_click(function(data, ...) {
      vals$data <- data
    })

3)最后,您可以使用访问数据vals$data并将其传递给*render函数。vals$data包含一个数据名声,它可能如下所示:

      wt  mpg
  1 3.19 24.4

完整代码:

library(shiny)
library(ggvis)

ui <- fluidPage(
  ggvisOutput("ggvis"),
  verbatimTextOutput("info")
)

server <- function(input, output, session) {

  vals <- reactiveValues(data = NULL)  

  mtcars %>%
    ggvis(~wt, ~mpg) %>%
    layer_points() %>%
    handle_click(function(data, ...) {
      # print(data) 
      vals$data <- data
    }) %>% 
    bind_shiny("ggvis")

  # Print values saved in the reactiveValues object
  output$info <- renderPrint({
    req(vals$data)
    cat(paste0(names(vals$data), "= ", vals$data, collapse = "\n"))
  })
}

shinyApp(ui, server)


------------------------------------------------- add_tooltip- -------------------------------------------------- -------------

另一种可能性是使用将出现在兴趣点附近的工具提示。

1)首先,您必须定义一个函数xy_vals该函数负责显示在工具提示中。(您也可以在内部将其定义add_tooltip为匿名函数)参数x包含一个数据框。

xy_vals <- function(x) {
  if(is.null(x)) 
    return(NULL)

  # show the data in the console
  # print(x) 

  # Define what should be shown in the tooltip
  # paste0(c("wt= ", "mpg= "),  c(x$wt, x$mpg), collapse = "<br />")
  paste0(names(x), "= ", paste0(x), collapse = "<br />")
}

2)然后添加add_tooltip功能ggvis对象。在此设置中,工具提示将显示在悬停上。您可以将其更改为“单击”,但是在这种情况下,即使您尝试“取消单击”,也会始终显示工具提示。

add_tooltip(html = xy_vals, on = "hover")

如果要将标识的点传递给某些render*函数,则可以定义reactiveValues对象(如第一个示例中所示),然后将其xy_vals覆盖。(必须在服务器外部定义reactiveValues)

完整代码:

# Define a function that goes to "add_tooltip"
xy_vals <- function(x) {
  if(is.null(x)) 
    return(NULL)

  # show the values in the console
  # print(x) 

  # Define what should be shown in the tooltip
  # paste0(c("wt= ", "mpg= "),  c(x$wt, x$mpg), collapse = "<br />")
  paste0(names(x), "= ", paste0(x), collapse = "<br />")
}


ui2 <- fluidPage(
  ggvisOutput("ggvis")
)

server2 <- function(input, output, session) {

  mtcars %>%
    ggvis(~wt, ~mpg) %>%
    layer_points() %>%
    add_tooltip(html = xy_vals, on = "hover") %>% # on = "click" # using "click" tooltip doesn't disappear
    bind_shiny("ggvis")
}

shinyApp(ui2, server2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS是否具有类似于Android的RecyclerView的功能?

来自分类Dev

C是否具有类似于C ++的#include <bitset>?

来自分类Dev

SwiftNIO是否具有类似于GCD障碍的机制?

来自分类Dev

Perl是否具有类似于docopt的模块?

来自分类Dev

Clojure是否具有类似于Mathematica中BinCounts的功能?

来自分类Dev

Java是否具有类似于Python的“ in”或“ not in”运算符?

来自分类Dev

Netbeans是否具有类似TortoiseSVN的导出选项?

来自分类Dev

是否还有其他类似于具有向量查找性能的集合的容器?

来自分类Dev

是否有类似于RingtonePreference的VibrationPreference?

来自分类Dev

Elixir是否具有类似于Clojure的持久数据结构?

来自分类Dev

Ace(编辑器)是否具有类似于CodeMirror的addLineWidget的API?

来自分类Dev

Aerospike是否具有类似于HBase协处理器的功能?

来自分类Dev

C ++是否具有类似于Fortran冒号A [2] [:]的数组占位符?

来自分类Dev

Ubuntu是否具有类似于Windows修复盘的修复盘?

来自分类Dev

使用JPA时,是否具有类似于Hibernate的load方法的内容?

来自分类Dev

swift是否具有类似于CustomStringConvertible的协议,可以进行详细的多行打印?

来自分类Dev

就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

来自分类Dev

Android Studio是否具有类似于Xcode的快速跳转栏和MARK的功能:

来自分类Dev

就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

来自分类Dev

Ubuntu是否具有类似于Windows修复盘的修复盘?

来自分类Dev

Chrome是否具有类似于Firefox的“应用程序”设置的内容?

来自分类Dev

Chrome是否具有类似于Firefox中的'的快速查找快捷方式?

来自分类Dev

Polymer Dart是否具有类似于Angular的ng-switch的功能?

来自分类Dev

Bootstrap是否在Foundation中具有类似于“ end”类的内容?

来自分类Dev

DateTimeFormatter是否具有类似于Joda的DateTimeFormatter#withOffsetParsed()方法的内容?

来自分类Dev

是否有类似“ include”的“ struct”命令,类似于“ sig”的“ include”?

来自分类Dev

Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

来自分类Dev

Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

来自分类Dev

有什么类似于python中的“ perl -pe”选项吗?

Related 相关文章

  1. 1

    iOS是否具有类似于Android的RecyclerView的功能?

  2. 2

    C是否具有类似于C ++的#include <bitset>?

  3. 3

    SwiftNIO是否具有类似于GCD障碍的机制?

  4. 4

    Perl是否具有类似于docopt的模块?

  5. 5

    Clojure是否具有类似于Mathematica中BinCounts的功能?

  6. 6

    Java是否具有类似于Python的“ in”或“ not in”运算符?

  7. 7

    Netbeans是否具有类似TortoiseSVN的导出选项?

  8. 8

    是否还有其他类似于具有向量查找性能的集合的容器?

  9. 9

    是否有类似于RingtonePreference的VibrationPreference?

  10. 10

    Elixir是否具有类似于Clojure的持久数据结构?

  11. 11

    Ace(编辑器)是否具有类似于CodeMirror的addLineWidget的API?

  12. 12

    Aerospike是否具有类似于HBase协处理器的功能?

  13. 13

    C ++是否具有类似于Fortran冒号A [2] [:]的数组占位符?

  14. 14

    Ubuntu是否具有类似于Windows修复盘的修复盘?

  15. 15

    使用JPA时,是否具有类似于Hibernate的load方法的内容?

  16. 16

    swift是否具有类似于CustomStringConvertible的协议,可以进行详细的多行打印?

  17. 17

    就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

  18. 18

    Android Studio是否具有类似于Xcode的快速跳转栏和MARK的功能:

  19. 19

    就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

  20. 20

    Ubuntu是否具有类似于Windows修复盘的修复盘?

  21. 21

    Chrome是否具有类似于Firefox的“应用程序”设置的内容?

  22. 22

    Chrome是否具有类似于Firefox中的'的快速查找快捷方式?

  23. 23

    Polymer Dart是否具有类似于Angular的ng-switch的功能?

  24. 24

    Bootstrap是否在Foundation中具有类似于“ end”类的内容?

  25. 25

    DateTimeFormatter是否具有类似于Joda的DateTimeFormatter#withOffsetParsed()方法的内容?

  26. 26

    是否有类似“ include”的“ struct”命令,类似于“ sig”的“ include”?

  27. 27

    Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

  28. 28

    Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

  29. 29

    有什么类似于python中的“ perl -pe”选项吗?

热门标签

归档