我正在尝试用ggplot2制作马赛克图。我正在使用HSAUR3包中的bladdercancer
数据。我希望显示肿瘤与数量之间的关系,但我不确定如何加重它。我知道使用tumorsizes<=3cm
的样本中的数字与使用tumorsize>3cm
的数字不同。如何将其纳入我的马赛克图?这是我在没有加权的情况下做的。
ggplot(data = bladdercancer, family=poisson()) +
geom_mosaic(aes(weight= 1 , x = product(tumorsize, number),
fill=factor(tumorsize)), na.rm=TRUE) +
labs(x="Number of tumors", title='Number of tumors vs Tumorsize') +
guides(fill=guide_legend(title = "Tumor Size"))
这可能是迟到但我提出我的建议,因为我试图做类似的事情。以下是两个建议:
library(tidyverse)
第一种选择:
bladdercancer %>%
group_by(tumorsize, number) %>%
# get frequencies/counts for each tumor size and for each number
summarise(n.cases = n()) %>%
ggplot() +
geom_mosaic(aes(weight = n.cases, x = product(number),
fill = factor(n.cases)), offset = 0) +
guides(fill=guide_legend(title = "Tumor Size")) +
labs(x="Number of tumors", title='Number of tumors vs Tumorsize') +
# remove background colour
theme_bw() +
theme(panel.grid.major = element_blank(),
# remove major and minor grids
panel.grid.minor = element_blank(),
# push title to the middle
plot.title = element_text(size = 10, hjust = .5))
其中每列中的类别代表每种肿瘤大小的不同计数,例如对于<=3cm
,数字1出现15次,对于>3cm
出现5次。然而,我无法在频率相同的地方进行分区,在本例中为3号和4号。因此我选择2
第二种选择:
ggplot(bladdercancer) +
geom_bar(aes(x = number, fill = tumorsize), position = "dodge")