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

subplot() with bar and pie chart creates unnecessary attribute and warning

Open Mkranj opened this issue 8 months ago • 1 comments

I'm trying to make a single chart that has both a bar chart and a relevant pie using subplot(). Subplot is optimal because I'd like the users to be able to screenshot both charts at once. Here is the code:

library(dplyr)
library(plotly)

bar_info <- data.frame(
  Group = rep(c("first", "second", "third"), 2),
  values_monthly = c(100, 200, 300, 400, 500, 600),
  month = rep(c("April", "May"), each = 3) %>% as.factor()
)
pie_info <- group_by(bar_info, Group) %>%
  summarise(values_total = sum(values_monthly))

colors = c("red", "blue", "yellow")

bar_chart <- plot_ly(bar_info, type = "bar",
                     x = ~ month, y = ~ values_monthly, color = ~Group,
                     colors = colors)

pie_chart <- plot_ly(pie_info, type = "pie",
                     labels = ~Group, values = ~values_total,
                     marker = list(colors = colors),
                     # setting up pie to the right
                     domain = list(x = c(0.9, 1), y = c(0,1)),
                     showlegend = F
                     )
    
combined_chart <- subplot(bar_chart, pie_chart, nrows = 1, 
        widths = c(0.9, 0.1)) 

combined_chart

Now, the most important thing, the chart looks as it should. However, it displays these warnings:

Warning messages:
1: Can't display both discrete & non-discrete data on same axis 
2: 'layout' objects don't have these attributes: 'NA'
Valid attributes include:
'_deprecated', 'activeshape', 'annotations', 'autosize', 'autotypenumbers', 'calendar', 'clickmode', 'coloraxis', 'colorscale', 'colorway', 'computed', 'datarevision', 'dragmode', 'editrevision', 'editType', 'font', 'geo', 'grid', 'height', 'hidesources', 'hoverdistance', 'hoverlabel', 'hovermode', 'images', 'legend', 'mapbox', 'margin', 'meta', 'metasrc', 'modebar', 'newshape', 'paper_bgcolor', 'plot_bgcolor', 'polar', 'scene', 'selectdirection', 'selectionrevision', 'separators', 'shapes', 'showlegend', 'sliders', 'smith', 'spikedistance', 'template', 'ternary', 'title', 'transition', 'uirevision', 'uniformtext', 'updatemenus', 'width', 'xaxis', 'yaxis', 'barmode', 'bargap', 'mapType'

How can I get rid of them? I've tried using shareX and shareY set to F or using add_trace for the pie, no help. When I open the JSON with plotly_json(combined_chart), I can see that the layout object has a new, unneeded object NA2. This is probably related to the problem.

Mkranj avatar May 19 '25 12:05 Mkranj

Also, even suppressWarnings() or suppressMessages() doesn't work to remove the console output.

Mkranj avatar May 19 '25 13:05 Mkranj