2

我正在尝试创建一个 ggparcoord 图,其中记录了一些具有正值和负值的数据的 y 值:

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 行包含缺失值。

无论如何,我尝试通过简单地将值 2 添加到 x 中的每个索引来解决这个问题(因此 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).

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

4

1 回答 1

1

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

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

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

在此处输入图像描述

于 2015-04-23T01:37:06.187 回答