NaNs在规模变换中产生

时间:2015-04-23 00:10:49

标签: r error-handling nan parallel-coordinates

我正在尝试创建一个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).

但是,我收到了同样的消息。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,ggparcoord函数具有参数scale="std",它按平均值减去并除以每个变量的标准差。这是一个自然的默认值,因为您试图在同一个y轴上绘制一堆可能具有非常不同比例的不同变量。不幸的是,对于您的应用程序,这意味着向x添加2将被缩放反转,负值将保留。

解决此问题的方法是删除缩放:

ggparcoord(x, columns=1:5, scale="globalminmax") + scale_y_log10(breaks=c(1, 2))

enter image description here