如何在不使用比例的情况下以小面包裹方式填充整个饼图=免费

问题描述 投票:0回答:2

进一步回答上一个问题如何对大量数据进行子集或聚合,以便我可以制作单独的饼图

我已经成功制作了下面的饼图,这很棒,但是有人知道我可以根据 Trip_Set 填充饼图的方法吗?即,大多数 Trip_Sets 只有一名男性或一名女性,因此它们应该完全是粉红色或蓝色的。因为其中一个有 3 (271_6),所以将其(最高的)作为默认值,以便其他饼有空白空间。我知道如果我在条形图中这样做,我可以添加

scales = "free"
但这不适用于非笛卡尔坐标系统...

这是我的数据:

Trip_Set   sex
119_4      hembra
119_4      hembra
119_7      hembra
161_7      macho
193_8      hembra
255_7      macho
271_6      hembra
271_6      macho
271_6      hembra
328_7      hembra
403_3      hembra
428_2      hembra
655_4      hembra

这是我的代码:

pie <- ggplot(dframe2, aes(x=1, y='Trip_Set', fill=sex)) +
  geom_bar(width = 1, stat="identity") +
  ggtitle("Sex ratio per line") +
  coord_polar(theta='y') +
  facet_wrap(~Trip_Set, ncol = 5) 

enter image description here

r scale pie-chart fill facet-wrap
2个回答
5
投票

看看这是否是您要找的:

# transform the data
library(dplyr)
dframe2_new = dframe2 %>% group_by(Trip_Set, sex) %>% tally()
# to plot
ggplot(data=dframe2_new, aes(x=factor(1), y=n, fill=sex)) +
  geom_bar(stat="identity", position=position_fill(width=1)) +
  coord_polar(theta="y") +
  facet_wrap(~Trip_Set, ncol=5)

enter image description here

如果你不需要坐标等,你可以尝试下面的代码

# to plot
ggplot(data=dframe2_new, aes(x=factor(1), y=n, fill=sex)) +
  geom_bar(stat="identity", position=position_fill(width=1)) +
  coord_polar(theta="y") +
  facet_wrap(~Trip_Set, ncol=5) + 
  theme(axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.grid  = element_blank()) +
  xlab("") +
  ylab("Trip_Set")

0
投票

对于

ggplot2 >= 3.5.0
,现在也可用于
coord_polar
。请参阅https://github.com/tidyverse/ggplot2/pull/5354

Trip_Set <- c("119_4", "119_4", "119_7", "161_7", "193_8", "255_7", "271_6", "271_6", "271_6", "328_7", "403_3", "428_2", "655_4")
sex <- c("hembra", "hembra", "hembra", "macho", "hembra", "macho", "hembra", "macho", "hembra", "hembra", "hembra", "hembra", "hembra")

dframe2 <- data.frame(Trip_Set, sex)

library(ggplot2)

packageVersion("ggplot2")
#> [1] '3.5.1'

ggplot(dframe2, aes(x = factor(1), fill = sex)) +
  geom_bar(width = 1) +
  ggtitle("Sex ratio per line") +
  coord_polar(theta = "y") +
  facet_wrap(~Trip_Set, ncol = 5, scales = "free_y")

© www.soinside.com 2019 - 2024. All rights reserved.