【问题标题】:Multiple plotly pie charts in one row一行中的多个 plotly 饼图
【发布时间】:2019-06-23 04:59:15
【问题描述】:

我正在尝试使用 plotly 包中的 subplot 函数将两个饼图排列在一行中,但结果图不是我所期望的。我可以对折线图等做同样的事情,但是在一行中绘制两个饼图时遇到了麻烦。以下是我拥有的代码。

ds_r <- data.frame(labels = c("Baseline", "DTC", "Detailing", "Flex"),
                 values = c(63.5, 8.5, 20.6, 7.4))

ds_l <- data.frame(labels = c("Baseline"),
                 values = c(100))

plot_right <- plot_ly(ds_r, labels = labels, values = values, type = "pie") %>% 
  layout(title = "Sales - Decomposed")

plot_left <- plot_ly(ds_l, labels = labels, values = values, type = "pie") %>%
  layout(title = "Total Sales")

subplot(plot_left, plot_right, nrows = 2)

输出是

如果您选中图像底部的红色框,则有两组轴,这意味着有两个图,但它们可能会重叠或其他什么。

我希望输出是单行中的两个饼图,没有任何轴。有什么帮助或方向吗?

【问题讨论】:

    标签: r pie-chart plotly


    【解决方案1】:

    plotly 的开发版本中有新改进的subplot 功能,但似乎“错误”仍然存在。我不确定它与饼图的效果如何。我在 Github 上提交了issue

    # devtools::install_github('ropensci/plotly")
    
    library(plotly)
    ds_r <- data.frame(labels1 = c("Baseline", "DTC", "Detailing", "Flex"),
                       values1 = c(63.5, 8.5, 20.6, 7.4))
    
    ds_l <- data.frame(labels2 = c("Baseline"),
                       values2 = c(100))
    
    p <- plot_ly(ds_r, labels = ~labels1, values = ~values1, type = "pie", 
               showlegend = F) 
    
    p2 <- plot_ly(ds_l,labels = ~labels2, values = ~values2, type = "pie", 
               showlegend = F)
    
    subplot(p, p2, nrows = 1)
    

    有关subplot 的更多详细信息,请参阅subplot vignette

    【讨论】:

      【解决方案2】:
      library(plotly)
      ds_r <- data.frame(labels1 = c("Baseline", "DTC", "Detailing", "Flex"),
                         values1 = c(63.5, 8.5, 20.6, 7.4))
      
      ds_l <- data.frame(labels2 = c("Baseline"),
                         values2 = c(100))
      df <- cbind(ds_r, ds_l)
      
      plot_ly(df, labels = labels1, values = values1, type = "pie", 
              domain = list(x = c(0, 0.4)), showlegend = F) %>% 
      
        add_trace(labels = labels2, values = values2, type = "pie", 
                  domain = list(x = c(0.6, 1)), showlegend = F)
      

      我会添加图片,但情节通常是大文件。

      【讨论】:

      • 谢谢。这是一个很好的方法。将帮助我取得成功,但没有办法用我认为更直接和一致的子图来做到这一点
      • 我不这么认为。我认为子图主要用于对齐折线图或散点图,它们根据某些因素的水平进行分组。
      猜你喜欢
      • 2015-01-12
      • 2020-04-27
      • 2020-12-07
      • 2021-04-12
      • 2023-03-19
      • 2021-03-25
      • 2017-11-23
      • 2019-07-25
      相关资源
      最近更新 更多