如何在R中使用plotly绘制嵌套饼图?

时间:2018-06-12 18:55:27

标签: r plotly pie-chart

我正在尝试绘制嵌套饼图,但输出并没有反映现实。

让我们说:

library('plotly')
library('dplyr')

data <- data.frame(c('cat', 'dog', 'deer','chicken', 'cat', 'dog','duck', 'monkey', 'fish','cow','horse','dog'),c('US', 'US', 'US','US', 'UK', 'UK','UK', 'UK','China','China','China','China'),c(15,70,120,55,47,300,89,62,40,27,103,8))
colnames(data) <- c('animal', 'country', 'total_num')

p <- plot_ly(data) %>% add_pie(labels = ~animal, values = ~total_num, type = 'pie', hole = 0.7, sort = F) %>% add_pie(data, labels = ~country, values = ~total_num, domain = list(x = c(0.15, 0.85),y = c(0.15, 0.85)),sort = F)

p

enter image description here

由此产生的饼图具有误导性,因为它应根据每个国家分配动物,分布应取决于国家。但是显示的饼图显示了个人分布。 我正在努力使用剧情。

非常感谢任何建议或帮助。

谢谢!

1 个答案:

答案 0 :(得分:4)

让我们忽略整个问题,如果有人应该回答如何创建嵌套饼图。

您可以创建两个饼图,外部图是圆环图,即设置hole = 0.7,内部图表是设置domain的子图。

library('plotly')
library('dplyr')

data <- data.frame(c('cats', 'monkeys', 'dogs'), c(30, 10, 20), c(20, 10, 10))
colnames(data) <- c('animal', 'street', 'home')

p <- plot_ly(data) %>%
  add_pie(labels = ~animal, values = ~street, type = 'pie', hole = 0.7, sort = F) %>%
  add_pie(data, labels = ~animal, values = ~home, 
          domain = list(
            x = c(0.15, 0.85),
            y = c(0.15, 0.85)),
          sort = F)
p

enter image description here