Skip to content

ggplot2::stat_summary with ggplot2::geom_crossbar inducing error in ggplotly #2220

Closed
@akunihiro

Description

@akunihiro

I am running into an issue after recently updating plotly (and possibly ggplot2). Using ggplot2::geom_crossbar in ggplot2::stat_summary and visualizing with ggplotly results in the following error:

Error in `[[<-.data.frame`(`*tmp*`, nm, value = numeric(0)) : 
  replacement has 0 rows, data has 3

Here is a reprex:

library(ggplotly)
library(plotly)
library(tidyverse)
library(ggbeeswarm)

data("iris")

iris_plot <- iris %>%
  ggplot(aes(x = Species, y = Sepal.Length)) +
  
  # plot quasirandom distribution
  geom_quasirandom(shape = 21,
                   # size = 2,
                   size = 4,
                   alpha = 1,
                   stroke = 0.1,
                   varwidth = TRUE) +
  
  # add median bar
  stat_summary(fun = function(x) log2(median(2^x)),
               geom = "crossbar",
               linetype = "dashed",
               color = "black") +
  
  # add mean bar
  stat_summary(fun = function(x) log2(mean(2^x)),
               geom = "crossbar",
               linetype = "solid",
               color = "black") +
  
  # log2 scale
  scale_y_continuous(trans = "log2")

# plotting directly works
iris_plot

# plot with ggplotly results in error
ggplotly(iris_plot) 

Changing the geom argument in ggplot2::stat_summary to "pointrange" allows the plot to be visualized with ggplotly

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions