如何使用R中的Plotly绘制嵌套饼图?

4

我想绘制一个嵌套饼图,但输出结果与实际情况不符。

假设:

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

这个饼图是有误导性的,因为它应该显示每个国家动物的分布情况,而分布应该取决于国家。但所显示的饼图显示的是各个国家内部的分布情况。 我正在使用Plotly努力实现这一点。

如果您有任何建议或帮助,将非常感激。

谢谢!


4
要求绘制饼图将仅仅招致R社区的愤怒。我只能想象当有人询问关于“嵌套”饼图时会发生什么。 :) - jordan
你能否给出使用ploltly.js的上述相同图表的示例?我正在努力将多个饼图组合在一起,就像你上面做的那样。 - Aniket Tiwari
1个回答

5

如果我们只回答如何创建嵌套饼图的问题,那么我们可以忽略整个问题。

您可以创建两个饼图,外部饼图是甜甜圈图,即通过设置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


1
感谢Max的帮助,但是你忽略了我的数据/问题,那不是我所要求的。如果我一开始没有表达清楚,我很抱歉。也许让我用你的方式来表达一下。 - Tan
我修改了我的问题。 - Tan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接