如何使用ggplot2绘制非标准化数据?

3

我使用ggplot2绘制鸢尾花数据图。看起来ggplot2会自动将数据标准化到(0.1)区间。如何在不进行任何标准化处理的情况下绘制数据图?

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

我不是以英语为母语的人,并且很抱歉会造成歧义。实际上,虹膜数据从0到8变化不等。我想要绘制反映真实值而非标准化值(将原始数据转换为(0,1)区间)的数据图。

2个回答

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()

输入图像说明

虽然可能有更好的方法。 我以前从未尝试过,所以尝试很有趣。


我不确定是否有更好的方法。似乎早期版本的 ggpcp() 函数有一个 scale = FALSE 的选项,但后来因为它依赖于“reshape”包而被删除了。 - A5C1D2H2I1M1N2O1R2T1
1
如果在geom_path中设置alpha=0.2,则图表不会那么拥挤。 - csgillespie

6
最直接的做法可能是使用GGally包。这样可以实现以下功能:
library(GGally)
ggparcoord(iris, columns = 1:4, groupColumn = 5, scale = "globalminmax")

这导致了以下结果: 在此输入图片描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接