使用 R plotly 创建条形图和饼图子图时遇到问题

Trouble with creating bar & pie subplot with R plotly

我创建了一个 Plotly 条形图和饼图,想将它们组合成一个图表。

当我使用 subplot() 组合这些 Plotly 图表时,饼图和条形图重叠。

关于如何呈现这些图以便每个图都在自己的行中有什么建议吗?谢谢。

这是我目前遇到的情况的图片:

下面的代表:

#Pie chart example
pie_tibble <- tibble(donuts = c(49050, 66924),
                    group = c("Group A", "Group B"))

pie <- plot_ly(data = pie_tibble, labels = ~group, values = ~donuts, type = 'pie',
               showlegend = F,
               hoverinfo = "none",
               marker = ~list(colors = c('#404040', '#24608B'))) %>% 
  layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))


bar_tibble <- tibble(category = c("Cat 1", "Cat 1", "Cat 2", "Cat 2"),
                     pct_increase = c(0.17, 0.25, 0.64, 0.85),
                     week = c(1, 2, 1, 2)) 

#Bar chart example
bar <- plot_ly(data = bar_tibble, hoverinfo = "none") %>%
  
  layout(
    barmode = 'stack',
    showlegend = F) %>%
  
  add_trace(
    x = ~pct_increase,
    y = ~category,
    type = "bar",
    transforms = list(
      list(
        type = "aggregate",
        groups = ~category,
        aggregations = list(
          list(
            target = "x", func = "avg", enabled = T)))))
 
#Combine charts
subplot(bar, pie, nrows = 2)

饼图和 plotly::subplot() 是出了名的具有挑战性 - 尽管您可以通过手动指定域来解决许多问题。下面我通过指定 domain = list(...) 更改了 pie 代码:

pie <- plot_ly(data = pie_tibble, labels = ~group, values = ~donuts, type = 'pie',
               # Specify the domain here
               domain = list(x = c(0.5, 0.5), # centered on x axis
                             y = c(0.0, 0.4)),
               showlegend = F,
               hoverinfo = "none",
               marker = ~list(colors = c('#404040', '#24608B'))) %>% 
   layout(xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

subplot(bar, pie, nrows = 2) 现在给出:

抱歉,我没有更优雅的答案,但希望其他人可以!