我正在尝试创建一个ggparcoord图,其中记录了一些具有正值和负值的数据:
x = data.frame(a=2*runif(100)-1,b=2*runif(100)-1,c=2*runif(100)-1,d=2*runif(100)-1,e=2*runif(100)-1)
dim(x)
[1] 100 5
然后我尝试绘制平行坐标图:
library(GGally)
ggparcoord(x, columns=1:5, alphaLines=0.5) + scale_y_log10()
并收到以下错误:
Warning messages:
1: In scale$trans$trans(x) : NaNs produced
2: Removed 167 rows containing missing values (geom_path).
我认为当我们记录负值时会产生NaN。但是,当x的维度为100行时,我不明白为什么167行包含缺失值。
在任何情况下,我都试图通过简单地为x中的每个索引添加值2来解决这个问题(因此x中的值现在介于+1和+3之间)。
x=x+2
ggparcoord(x, columns=1:5, alphaLines=0.5) + scale_y_log10()
Warning messages:
1: In scale$trans$trans(x) : NaNs produced
2: Removed 167 rows containing missing values (geom_path).
但是,我收到了同样的消息。知道如何解决这个问题吗?
答案 0 :(得分:1)
默认情况下,ggparcoord
函数具有参数scale="std"
,它按平均值减去并除以每个变量的标准差。这是一个自然的默认值,因为您试图在同一个y轴上绘制一堆可能具有非常不同比例的不同变量。不幸的是,对于您的应用程序,这意味着向x
添加2将被缩放反转,负值将保留。
解决此问题的方法是删除缩放:
ggparcoord(x, columns=1:5, scale="globalminmax") + scale_y_log10(breaks=c(1, 2))