2012-10-09 34 views
3

我用ggplot2绘制虹膜数据。看来ggplot2会自动将数据标准化为(0.1)的间隔。如何在没有任何标准化操作的情况下绘制数据?如何用ggplot2绘制非标准化的数据?

library(ggplot2) 
p <- ggpcp(iris, vars = names(iris[1:4])) 
p + geom_line(aes(color = Species)) + ylim(0,8) 

我不是一个母语是英语,我很抱歉,使不确定性。实际上,虹膜数据从0到8不等。我想绘制的数据完全反映真实值,但不是标准化值(将原始数据转换为(0,1)区间)。

回答

6

可能:

library(ggplot2) 
p <- ggpcp(iris, vars = names(iris[1:4])) 
iris2 <- data.frame(id=1:nrow(iris), iris) 
dat <- reshape2::melt(iris2,id.var = c("id", "Species")) 
ggplot(aes(y=value, x=variable, group=id, color=Species), data=dat) + geom_path() 

enter image description here

虽然可能会有更好的办法。从来没有这样做,所以它很有趣的尝试。

+0

我不知道是否有更好的办法。似乎早期版本的'ggpcp()'函数有'scale = FALSE'的选项,但是因为它取决于“重塑”包,所以被删除了。 – A5C1D2H2I1M1N2O1R2T1

+1

如果在'geom_path'中make'alpha = 0.2',那么情节就不那么拥挤。 – csgillespie

6

最直接的方法是使用GGally package。这可以让你做到以下几点:

library(GGally) 
ggparcoord(iris, columns = 1:4, groupColumn = 5, scale = "globalminmax") 

导致:

enter image description here