使用R语言GGally包ggparcoord()出现colour美学丢弃警告的咨询
问题原因及解决方法
原因分析
你遇到的警告'The following aesthetics were dropped during statistical transformation: colour',本质是因为:
当启用boxplot = TRUE时,ggparcoord会添加箱线图图层。而箱线图的统计变换逻辑(stat_boxplot)并不使用由groupColumn = 1自动生成的colour美学映射(这个映射原本是给分组线条用的)。ggplot在执行统计变换时检测到这个未被利用的美学属性,因此抛出警告提示它被丢弃。
注意:这个警告完全不影响最终绘图结果,只是告知存在一个未被当前统计层使用的美学映射。
解决方法
方法一:直接抑制警告(推荐)
既然警告不影响功能,最简单的方式就是用suppressWarnings()包裹整个ggparcoord调用,屏蔽该警告:
suppressWarnings(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 = aes(labels = 1), title = "TEST" ))
方法二:移除不必要的分组着色
如果你不需要将线条按geneSymbol分组着色,可以删除groupColumn = 1参数,这样就不会生成colour美学映射,自然不会触发警告:
ggparcoord( data = data2, columns = 2:4, scale = "std", scaleSummary = "mean", centerObsID = 1, missing = "exclude", showPoints = FALSE, splineFactor = FALSE, alphaLines = 1, boxplot = TRUE, shadeBox = NULL, mapping = aes(labels = 1), title = "TEST" )
方法三:手动调整图层美学(进阶)
如果既想保留线条的分组着色,又想彻底消除警告,可以手动修改绘图对象,把colour美学仅限定在线条图层:
# 先绘制图形 p <- 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 = aes(labels = 1), title = "TEST" ) # 移除箱线图图层的colour美学映射 p$layers[[2]]$aes_params$colour <- NULL p$layers[[2]]$mapping <- aes(x = x, y = y) # 显示图形 print(p)
这种方法需要对ggplot的图层结构有一定了解,适合有进阶需求的场景。
内容的提问来源于stack exchange,提问作者wbart
相关产品推荐
相关产品推荐

