You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:52:26