Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nearPoints with a discrete x-axis does not find points with a NA x-value #2666

Closed
stla opened this issue Oct 16, 2019 · 2 comments
Closed

nearPoints with a discrete x-axis does not find points with a NA x-value #2666

stla opened this issue Oct 16, 2019 · 2 comments
Labels
Type: Bug 🐛 Type: Regression Functionality from a previous release no longer works

Comments

@stla
Copy link

stla commented Oct 16, 2019

Hello,

Please give a try to the app below. The point with a NA value on the x-axis is not found by nearPoints.

With shiny < 1.4.0 I added the variable as.integer(dat$fact) to the dataframe dat and I used this variable for xvar in nearPoints. This worked with NA values (if I correctly remember).

library(shiny)
library(ggplot2)

ui <- basicPage(
  plotOutput("plot", hover = hoverOpts("hover")),
  verbatimTextOutput("nearPoint")
)

server <- function(input,output){
  
  dat <- data.frame(
    x = 1:3,
    fact = c("a","b",NA)
  )
  # dat$fact <- addNA(dat$fact) useless!
  
  output$plot <- renderPlot({
    ggplot(dat, aes(fact, x)) + geom_point()  
  })
  
  output$nearPoint <- renderPrint({
    if(!is.null(coordinfo <- input$hover)){
      nearPoints(dat, coordinfo, threshold = 15, maxpoints = 1)
    }
  })
}

shinyApp(ui, server)
@cpsievert
Copy link
Collaborator

Thanks for the report. I do see a difference between shiny 1.4 and 1.3 when addNA() is used.

@cpsievert cpsievert added Type: Bug 🐛 Type: Regression Functionality from a previous release no longer works labels Oct 16, 2019
@cpsievert
Copy link
Collaborator

cpsievert commented Oct 16, 2019

Until a proper fix is available, note that you can work around this specific problem by coercing the NA values to a string

dat$fact <- ifelse(is.na(dat$fact), "NA", dat$fact)

schloerke added a commit that referenced this issue Aug 3, 2021
* master:
  Interpret NULL discrete limits as NA, fixes #2666 (#2668)
schloerke added a commit that referenced this issue Aug 3, 2021
* master:
  Update `esbuild-plugin-sass` to latest version (#3463)
  Interpret NULL discrete limits as NA, fixes #2666 (#2668)
  Add `sustainEnvAndQuoted()`. Remove `getQuosure()` (#3468)
  Update NEWS
  Fix handling of getQuosure3(expr, env, quoted=TRUE)
  Fix NEWS entry
  Update NEWS
  Fix example
  Update pkgdown.yml
  Update documentation
  Add quosure tests for custom render functions
  Update comment
  Export getQuosure() and add internal getQuosure3()
  Rename get_quosure to getQuosure
  Modify exprToFunction to accept quosures
  Move expression/quosure functions to utils-lang.R
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Apr 30, 2022
shiny 1.7.1
===========
## Bug Fixes

* Closed #3516: Fix regression in repeated calls to `appendTab()` when
  `navbarMenu()` is already present within a
  `tabsetPanel()`/`navbarPage()`. (#3518)

* Re-arranged conditions for testthat 1.0.0 compatibility. (#3512)

shiny 1.7.0
===========
## Full changelog
### Breaking changes

* The `format` and `locale` arguments to `sliderInput()` have been
  removed. They have been deprecated since 0.10.2.2 (released on
  2014-12-08).

* Closed #3403: `insertTab()`'s `position` parameter now defaults to
  `"after"` instead of `"before"`. This has the benefit of allowing us
  to fix a bug in positioning when `target = NULL`, but has the
  drawback of changing the default behavior when `target` is not
  `NULL`. (#3404)

### New features and improvements
* Bootstrap 5 support. (#3410 and rstudio/bslib#304)

  * As explained
    [here](https://rstudio.github.io/bslib/index.html#basic-usage), to
    opt-in to Bootstrap 5, provide `bslib::bs_theme(version = 5)` to a
    page layout function with a `theme` argument (e.g., `fluidPage()`,
    `navbarPage()`, etc).

* Closed #3322, #3313, #1823, #3321, #3320, #1928, and #2310: Various
  improvements to `navbarPage()`, `tabsetPanel()`, `tabPanel()`,
  `navbarMenu()`, etc. Also, these functions are now powered by the
  `{bslib}` package's new `nav()` API (consider using `{bslib}`'s API
  to create better looking and more fully featured navs). (#3388)

* All uses of `list(...)` have been replaced with
  `rlang::list2(...)`. This means that you can use trailing `,`
  without error and use rlang's `!!!` operator to "splice" a list of
  argument values into `...`. We think this'll be particularly useful
  for passing a list of `tabPanel()` to their consumers (i.e.,
  `tabsetPanel()`, `navbarPage()`, etc). For example, `tabs <-
  list(tabPanel("A", "a"), tabPanel("B", "b"));
  navbarPage(!!!tabs)`. (#3315 and #3328)

* `installExprFunction()` and `exprToFunction()` are now able to
  handle quosures when `quoted = TRUE`. So `render`-functions which
  call these functions (such as with `htmlwidgets`) can now understand
  quosures. Users can also use `rlang::inject()` to unquote a quosure
  for evaluation.  This also means that `render` function no longer
  need `env` and `quoted` parameters; that information can be embedded
  into a quosure which is then passed to the `render` function. Better
  documentation was added for how to create `render`
  functions. (#3472)

* `icon(lib="fontawesome")` is now powered by the `{fontawesome}`
  package, which will make it easier to use the latest FA icons in the
  future (by updating the `{fontawesome}` package). (#3302)

* Closed #3397: `renderPlot()` new uses `ggplot2::get_alt_text()` to inform an `alt` text default (for `{ggplot2}` plots). (#3398)

* `modalDialog()` gains support for `size = "xl"`. (#3410)

* Addressed #2521: Updated the list of TCP ports that will be rejected
  by default in runapp.R, adding 5060, 5061 and 6566. Added
  documentation describing the port range (3000:8000) and which ports
  are rejected. (#3456)

### Other improvements
* Shiny's core JavaScript code was converted to TypeScript. For the
  latest development information, please see the [README.md in
  `./srcts`](https://github.com/rstudio/shiny/tree/master/srcts). (#3296)

* Switched from `digest::digest()` to `rlang::hash()` for hashing. (#3264)

* Switched from internal `Stack` class to `fastmap::faststack()`, and
  used `fastmap::fastqueue()`. (#3176)

* Some long-deprecated functions and function parameters were
  removed. (#3137)

### Bug fixes
* Closed #3345: Shiny now correctly renders
  `htmltools::htmlDependency()`(s) with a `list()` of `script`
  attributes when used in a dynamic UI context. This fairly new
  `htmlDependency()` feature was added in `{htmltools}`
  v0.5.1. (#3395)

* Fixed [#2666](rstudio/shiny#2666) and
  [#2670](rstudio/shiny#2670):
  `nearPoints()` and `brushedPoints()` weren't properly account for
  missing values (#2666 was introduced in
  v1.4.0). ([#2668](rstudio/shiny#2668))

* Closed #3374: `quoToFunction()` now works correctly with nested
  quosures; and as a result, quasi-quotation with rendering function
  (e.g., `renderPrint()`, `renderPlot()`, etc) now works as expected
  with nested quosures. (#3373)

* Exported `register_devmode_option()`. This method was described in
  the documentation for `devmode()` but was never exported. See
  `?devmode()` for more details on how to register Shiny Developer
  options using `register_devmode_option()`. (#3364)

* Closed #3484: In the RStudio IDE on Mac 11.5, selected checkboxes
  and radio buttons were not visible. (#3485)

### Library updates

* Closed #3286: Updated to Font-Awesome 5.15.2. (#3288)

* Updated to jQuery 3.6.0. (#3311)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug 🐛 Type: Regression Functionality from a previous release no longer works
Projects
None yet
Development

No branches or pull requests

2 participants