如何在R的ggparcoord平行坐标图中仅在每行左侧添加一次标签
解决GGally平行坐标图仅在左侧显示一次基因标签的方法
你的问题核心是geom_text默认会在每个坐标轴位置(每个condition)重复显示基因标签,只需仅保留最左侧坐标轴(第一个condition对应的x位置)的标签即可解决。
具体实现方法
方法1:使用subset筛选左侧位置的标签
直接在geom_text中通过subset参数,只保留x值为1的观测(对应第一个condition的坐标轴位置):
## test data set set.seed(123) # 设置随机种子保证结果可复现 data2 <- data.frame( "geneSymbol" = paste("Gene", 1:10), "condition1" = rnorm(10, 3, 1), "condition2" = rnorm(10, 4, 0.5), "condition3" = rnorm(10, 7, 0.3) ) # 绘制平行坐标图,仅左侧显示标签 ggparcoord(data= data2, columns = 2:4, groupColumn = 1, scale = "std", scaleSummary = "mean", centerObsID = 1, missing = "exclude", showPoints = FALSE, splineFactor = FALSE, alphaLines = 1, boxplot = TRUE, shadeBox = NULL, mapping = NULL, title = "TEST")+ geom_text(aes(label=geneSymbol), subset = .(x == 1), hjust = 1.1) # hjust调整标签位置避免重叠
方法2:用ifelse控制标签显示
在aes的label参数中,通过ifelse判断x位置,仅在x=1时显示基因名,其余位置为空字符串:
ggparcoord(data= data2, columns = 2:4, groupColumn = 1, scale = "std", scaleSummary = "mean", centerObsID = 1, missing = "exclude", showPoints = FALSE, splineFactor = FALSE, alphaLines = 1, boxplot = TRUE, shadeBox = NULL, mapping = NULL, title = "TEST")+ geom_text(aes(label=ifelse(x == 1, geneSymbol, "")), hjust = 1.1)
原理说明
ggparcoord会将你指定的columns参数中的每个列,转换为x轴上的离散数值(从1开始依次对应columns中的列)。通过筛选x=1的观测,就能确保每个基因的标签仅在最左侧的坐标轴位置显示一次,避免重复标注导致的图面混乱。
内容的提问来源于stack exchange,提问作者wbart
相关产品推荐
相关产品推荐

