Geom_mosaic绘图:如何为轴添加变量标签及Yes/No标识?
解决geom_mosaic的轴标签与分类标签添加问题
我来帮你搞定这个需求!要给geom_mosaic图形添加轴的变量标签,同时显示类似mosaicplot的"Yes"/"No"分类标签,你可以按以下步骤修改代码:
1. 先确保加载必要的包
geom_mosaic属于ggmosaic包,所以首先要加载它(当然ggplot2也不能少):
library(ggplot2) library(ggmosaic)
2. 添加轴的变量标签(轴标题)
用labs()函数就能轻松给x、y轴加上对应的变量名称,对应你用到的probation和substanceabuse:
ggplot(data) + geom_mosaic(aes(x = product(substanceabuse, probation), fill = substanceabuse)) + # 设置轴的变量标签和图例标签 labs( x = "Probation Status", # x轴对应probation变量 y = "Substance Abuse Status", # y轴对应substanceabuse变量 fill = "Substance Abuse" # 可选:调整填充色图例的标签 )
3. 确保轴上显示"Yes"/"No"分类标签
如果你的变量本身就是包含"Yes"/"No"水平的因子,geom_mosaic默认应该会显示这些标签,但如果没显示或者显示不对,可以用scale_x_discrete()和scale_y_discrete()强制指定:
ggplot(data) + geom_mosaic(aes(x = product(substanceabuse, probation), fill = substanceabuse)) + labs( x = "Probation Status", y = "Substance Abuse Status", fill = "Substance Abuse" ) + # 明确设置轴上的分类标签为"Yes"和"No" scale_x_discrete(labels = c("Yes", "No")) + scale_y_discrete(labels = c("Yes", "No"))
如果你的变量是数值型(比如0/1),可以这样映射标签:
scale_x_discrete(labels = c("0" = "No", "1" = "Yes")) scale_y_discrete(labels = c("0" = "No", "1" = "Yes"))
4. (可选)在马赛克块内添加"Yes"/"No"标签
如果你想像mosaicplot那样在每个块内显示分类标签,可以添加geom_text()图层,用stat="mosaic"来获取对应的分类值:
ggplot(data) + geom_mosaic(aes(x = product(substanceabuse, probation), fill = substanceabuse)) + labs( x = "Probation Status", y = "Substance Abuse Status", fill = "Substance Abuse" ) + scale_x_discrete(labels = c("Yes", "No")) + scale_y_discrete(labels = c("Yes", "No")) + # 在块内添加substanceabuse的"Yes"/"No"标签 geom_text( stat = "mosaic", aes(label = ..y..), # ..y..对应product里的第一个变量substanceabuse color = "white", # 标签颜色,和填充色区分开 size = 3.5, vjust = 0.5, # 垂直居中 hjust = 0.5 # 水平居中 )
如果想同时显示两个变量的标签,可以把label改成paste(..x.., ..y.., sep="\n"),这样会换行显示probation和substanceabuse的分类。
内容的提问来源于stack exchange,提问作者p doron
相关产品推荐
相关产品推荐

