如何在R中制作太阳图?跟进:

3

我是R的新手,本来想直接在评论区里问问题,但因为声望不够所以不能 :D

基本上,我想做一个像dmp在这个帖子中建议的旭日图: How to make a sunburst plot in R or Python?

然而,我的数据框看起来更像这样:

df <- data.frame(
    'level1'=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'), 
    'level2'=c('AA', 'BB', 'CC', 'AA', 'BB', 'CC', 'AA', 'BB'), 
    'value'=c(12.5, 12.5, 75, 50, 25, 25, 36, 64))

因此,当我按照以下方式绘制旭日图时:

ggplot(df, aes(y=value)) +
    geom_bar(aes(fill=level1, x=0), width=.5, stat='identity') + 
    geom_bar(aes(fill=level2, x=.25), width=.25, stat='identity') + 
    coord_polar(theta='y')

ggplot将level2分组在一起(因此将所有AA放在一起,然后将所有BB和所有CC放在一起),而不是保留每个level1中的各个类别。我该如何防止这种情况发生?

非常感谢您的帮助。

Nath

1个回答

2
你可以尝试给数据框添加一个行ID列,并将其显式地用作分组变量。这可以防止ggplot()fill美学对条形图进行分组:最初的回答
library(dplyr)

ggplot(df %>% mutate(id = seq(1, n())), 
       aes(y = value, group = id)) +
  geom_col(aes(fill = level1, x = 0), width = .5) + 
  geom_col(aes(fill = level2, x = .25), width = .25) +
  coord_polar(theta = 'y')

plot


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