如何使用ggplot2创建尺寸随性别占比动态变化的象形图
解决ggplot2性别象形图的颜色与尺寸问题
问题分析与修正
1. 颜色不符合设置的问题
你把颜色参数color放在了aes()函数内部,ggplot会将传入的颜色值当作分类变量进行颜色映射,而非直接使用指定的颜色。只需把color移出aes(),作为geom_text()的独立参数即可。
2. 图标尺寸未按频率正比显示的问题
你误用了hjust参数控制尺寸——hjust是用来设置文本水平对齐方式的,和图标大小无关。正确做法是将size参数设置为基础尺寸 × 对应性别的相对频率,这样图标大小就会和频率成正比。
修正后的完整代码
library(ggplot2) # 创建示例数据集 sum <- matrix(c(36, 12), 1, 2, dimnames=list("Anzahl", c("male", "female"))) rel_sum <- sum / sum(sum) # 选择符号和颜色 par(family = "Segoe UI Symbol") symbol_m <- "\u2642" symbol_w <- "\u2640" # 定义颜色 colour_m <- rgb(255, 255, 204, maxColorValue = 255) colour_w <- rgb(161, 218, 180, maxColorValue = 255) p <- ggplot() + xlim(0, 2) + ylim(0, 1) + theme_void() p <- p + geom_text( aes(x = 0.5, y = 0.5, label = symbol_m), color = colour_m, # 颜色参数移至aes外部 size = 10 * rel_sum["male"], # 按相对频率缩放尺寸 hjust = 0.5 # 居中对齐图标 ) + geom_text( aes(x = 1.5, y = 0.5, label = symbol_w), color = colour_w, # 颜色参数移至aes外部 size = 10 * rel_sum["female"], # 按相对频率缩放尺寸 hjust = 0.5 # 居中对齐图标 ) print(p)
内容的提问来源于stack exchange,提问作者jc_som
相关产品推荐
相关产品推荐

