尺度变换中产生的 NaN
NaNs produced in scale transform
我正在尝试创建一个 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).
但是,我收到了同样的信息。知道如何解决这个问题吗?
ggparcoord
函数默认有参数scale="std"
,它为每个变量减去均值并除以标准差。这是一个自然的默认设置,因为您正试图绘制一堆不同的变量,这些变量可能在同一 y 轴上具有非常不同的比例。不幸的是,对于您的应用程序,这意味着将 2 添加到 x
将被缩放反转,负值将保留。
解决此问题的方法是删除缩放:
ggparcoord(x, columns=1:5, scale="globalminmax") + scale_y_log10(breaks=c(1, 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).
但是,我收到了同样的信息。知道如何解决这个问题吗?
ggparcoord
函数默认有参数scale="std"
,它为每个变量减去均值并除以标准差。这是一个自然的默认设置,因为您正试图绘制一堆不同的变量,这些变量可能在同一 y 轴上具有非常不同的比例。不幸的是,对于您的应用程序,这意味着将 2 添加到 x
将被缩放反转,负值将保留。
解决此问题的方法是删除缩放:
ggparcoord(x, columns=1:5, scale="globalminmax") + scale_y_log10(breaks=c(1, 2))