plotly.R icon indicating copy to clipboard operation
plotly.R copied to clipboard

Please implement geom_GeomXsidebar() and related geoms

Open KatChampion opened this issue 2 years ago • 0 comments

I tried to use plotly on ggplot graph that used geom_xsidehistogram and geom_ysidehistorgram, but when I did I got a warning that plotly was not yet implemented for geom_GeomXsidebar and geom_GeomYsidebar and suggestion to report it here. It would be lovely if plotly were implemented for these geoms.

My data structure was master - a data frame containing:

  • region (character)
  • envir_var_elevation (numeric)
  • loggdppc (numeric)
  • value (numeric)
  • reactive_value (numeric)

df_plot - a data frame containing:

  • envir.group (numeric factor)
  • loggdppc.group (numeric factor)
  • value.squish (numeric)
  • reactive_value.mean (numeric)

df_plot was created by taking the data from master binning elevation and loggdppc and then finding the mean in each bin combination.

Here is my plot code

p_elev_income = ggplot(df_plot, aes(x = envir.group, y = loggdppc.group, fill = value.squish,
                                      text = glue("reactive adapt: {reactive_value.mean}"))) + 
    geom_tile() + 
    geom_xsidehistogram(data = master, aes(x = envir_var_elevation, y = after_stat(density)), binwidth = .01, inherit.aes = F) +
    geom_ysidehistogram(data = master, aes(x = after_stat(density), y = loggdppc), binwidth = 0.08, inherit.aes = F) +
    ggside(x.pos = "bottom", y.pos = "left") +
    xlab(xlab_name) +
    ylab("Log GDP per Capita") +
    scale_fill_gradientn(colours = blue_red.colors, 
                         name = scale_name,
                         limits = limits_val,  
                         breaks = breaks_labels_val,
                         labels = breaks_labels_val,
                         values = rescale(rescale_val),
                         na.value = NA
                         ) +
    theme(panel.background = element_rect(fill = 'white', colour = 'grey'),
          ggside.panel.scale.x = 0.2,
          ggside.panel.scale.y = 0.2)

ggplotly(p_elev_income)

Here's what the plot looks like when plotted normally: Screen Shot 2024-01-11 at 11 11 46 AM

And here's what it looks like when plotted with plotly: Screen Shot 2024-01-11 at 11 12 18 AM

I was using plotly because I wanted the hover text/tool tip ability, and that functionality did work correctly for me. Unfortunately, the side histograms disappeared. Also for my use case, I only need the hover text/tool tip on the main geom_tile portion of the graphic having it also appear on the side histograms would just be a bonus.

KatChampion avatar Jan 11 '24 17:01 KatChampion