如何在ggpairs绘图中重命名分面的变量名称?
重命名ggpairs绘图分面名称的两种方法
原始代码与需求
你当前使用的绘图代码:
printVar = function(x,y){ vals = cor.test(x,y, method="spearman")[c("estimate","p.value")] names(vals) = c("rho","p") paste(names(vals),signif(unlist(vals),2),collapse="\n") } ggpairs(baseline_sbp, title=" ", upper=list(continuous=wrap("statistic",text_fn=printVar,title=NULL, sep=NULL ) ) )
数据集:
baseline_sbp <- structure(list(delta_bp = c(-21.5, 7, -17.5, -10.5, -21, -7.5, 4.5, 3, -9, 9, -22.5, -9.5), delta_bp_05 = c(-21.5, 0, 3, -13.5, -13, -4, -16.5, -8, 5, -5, -12, 0.5), delta_bp_10 = c(-26.5, 1, -6, -10.5, -9, -3, -20.5, -10, 1, -6, -22, -0.5)), row.names = c(NA, -12L), class = c("tbl_df", "tbl", "data.frame"), na.action = structure(c(`17` = 17L, `27` = 27L, `32` = 32L), class = "omit"))
需求:将绘图分面中的“delta_bp”名称改为“dragon”。
方法一:直接修改数据框列名(最简单)
直接修改数据集的列名,绘图时会自动使用新名称作为分面标签,适合后续操作也需要用新名称的场景。
修改后的完整代码:
# 先修改数据框的列名,按顺序对应原列 colnames(baseline_sbp) <- c("dragon", "delta_bp_05", "delta_bp_10") # 原绘图函数和代码保持不变 printVar = function(x,y){ vals = cor.test(x,y, method="spearman")[c("estimate","p.value")] names(vals) = c("rho","p") paste(names(vals),signif(unlist(vals),2),collapse="\n") } ggpairs(baseline_sbp, title=" ", upper=list(continuous=wrap("statistic",text_fn=printVar,title=NULL, sep=NULL ) ) )
方法二:仅在绘图时修改标签(不改动原数据)
如果不想修改原始数据集,可以通过ggpairs的参数手动指定分面标签,只在绘图生效。
修改后的完整代码:
printVar = function(x,y){ vals = cor.test(x,y, method="spearman")[c("estimate","p.value")] names(vals) = c("rho","p") paste(names(vals),signif(unlist(vals),2),collapse="\n") } # 定义自定义标签,顺序要和数据框列的顺序完全一致 custom_labels <- c("dragon", "delta_bp_05", "delta_bp_10") ggpairs(baseline_sbp, title=" ", upper=list(continuous=wrap("statistic",text_fn=printVar,title=NULL, sep=NULL )), axisLabels = "manual", # 开启手动标签模式 columnLabels = custom_labels, # 设置列分面标签 rowLabels = custom_labels) # 设置行分面标签(对称矩阵需一致)
内容的提问来源于stack exchange,提问作者jtjtjtjt
相关产品推荐
相关产品推荐

