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

如何在metafor的regplot中按city变量修改气泡颜色?

问题

我已使用R语言的metafor包完成元回归分析,代码如下:

res.quad <- rma(mix.minor.1.1_estimates, sei = mix.minor.1.1_errors, mods = ~ poly(minperc, degree=2, raw=TRUE), data=meta2)
res.quad

随后绘制了气泡图,代码如下:

xs <- seq(0, 1, length=10)
sav <- predict(res.quad, newmods=unname(poly(xs, degree=2, raw=TRUE)))
regplot(res.quad, mod=2, pred=sav, xvals=xs, xlab="Proportion of ethnic minority in class", ylab="Ethnic minority homophily")

我希望根据meta2数据框中未用于元回归的city变量修改气泡颜色,请问是否有可行的实现方法?

附meta2数据框代码:

meta2 <- data.frame(mix.minor.1.1_estimates = c(1, -1, 2, 2.3, 4.2, 0, -3.5),
                 mix.minor.1.1_errors = c(0.1, 0.5, 0.3, 0.3, 0.2, 0.1, 0.5),
city = c("n", "s", "n", "s", "n", "s", "n"),
minperc = c(0.8, 0.9, 0.1, 0.6, 0.3, 0.2, 0.5))
解决方法

metafor包的regplot()函数支持通过col参数指定单个数据点的颜色,你可以直接基于meta2$city变量生成颜色向量来实现分组着色,以下是两种可行方案:

方案一:手动指定颜色映射

直接为不同城市类别分配自定义颜色:

# 根据city变量生成颜色向量
color_vec <- ifelse(meta2$city == "n", "#1f77b4", "#ff7f0e") # 蓝色对应"n",橙色对应"s"

# 绘制带颜色区分的气泡图
xs <- seq(0, 1, length=10)
sav <- predict(res.quad, newmods=unname(poly(xs, degree=2, raw=TRUE)))
regplot(res.quad, mod=2, pred=sav, xvals=xs, 
        xlab="班级中少数族裔比例", ylab="少数族裔同质性",
        col=color_vec, pch=19) # pch=19设置实心气泡样式

# 添加图例说明颜色对应关系
legend("topright", legend=c("n", "s"), col=c("#1f77b4", "#ff7f0e"), 
       pch=19, title="城市分组")

方案二:自动分配分类颜色

若无需自定义颜色,可将city转为因子,使用R默认的分类配色:

# 将city转换为因子类型
meta2$city <- factor(meta2$city)

# 自动生成对应因子水平的颜色
color_vec <- scales::hue_pal()(nlevels(meta2$city))[meta2$city]

# 绘图
xs <- seq(0, 1, length=10)
sav <- predict(res.quad, newmods=unname(poly(xs, degree=2, raw=TRUE)))
regplot(res.quad, mod=2, pred=sav, xvals=xs, 
        xlab="班级中少数族裔比例", ylab="少数族裔同质性",
        col=color_vec, pch=19)

# 添加图例
legend("topright", legend=levels(meta2$city), col=scales::hue_pal()(nlevels(meta2$city)), 
       pch=19, title="城市分组")

核心逻辑:regplot()的col参数接受长度与数据点数量一致的向量,每个元素对应一个气泡的颜色。通过city变量的取值映射颜色,就能实现按城市区分气泡的效果,配合图例可让图表更清晰。

内容的提问来源于stack exchange,提问作者Polina Ermolaeva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:42:43