R语言使用for循环生成按颜色与产品前缀分组的多面板散点图咨询
R语言for循环生成多组散点图调整方案
调整思路
- 首先从列名中提取所有唯一的产品前缀(如
55_、34_),支持后续新增前缀自动适配无需修改代码 - 将原有的单层颜色遍历循环,改为颜色行 + 产品前缀的双层循环,覆盖所有组合生成对应散点图
- 每次取数时同时匹配前缀和指标类型(bubbles/troubles),保证取到对应分组的数值
完整调整后代码
# 提取所有唯一的产品前缀 col_prefixes <- unique(sub("^(\\d+_).*", "\\1", colnames(data))) pdf("scatterplot.pdf") # 外层遍历颜色行 for(i in seq_len(nrow(data))){ # 内层遍历产品前缀 for(prefix in col_prefixes){ # 匹配当前前缀对应的bubbles和troubles列 x_col <- grep(paste0("^", prefix, ".*bubbles_"), colnames(data)) y_col <- grep(paste0("^", prefix, ".*troubles_"), colnames(data)) df <- data.frame( x = data[i, x_col], y = data[i, y_col] ) # 绘图,保留原有xy坐标轴范围设置 plot(df$x, df$y, xlim = xy, ylim = xy, main = paste0(rownames(data)[i], "-", prefix, "散点图") # 可选添加标题区分图片 ) } } dev.off()
效果说明
运行代码后会自动生成4种颜色 × 2种前缀共8张独立散点图,和需求完全匹配。如果需要调整分组规则,只需修改前缀提取的正则表达式即可。
内容的提问来源于stack exchange,提问作者Drashti
相关产品推荐
相关产品推荐

