如何将离散因子水平视为连续?

时间:2011-06-17 13:17:51

标签: r ggplot2 dataframe r-factor

我有一个数据框,其中列最初标记为任意。稍后,我想将这些级别更改为数值。以下脚本说明了问题。

library(ggplot2)
library(reshape2)

m <- 10
n <- 6

nam <- list(c(),letters[1:n])
var <- as.data.frame(matrix(sort(rnorm(m*n)),m,n,F,nam))
dtf <- data.frame(t=seq(m)*0.1, var)
mdf <- melt(dtf, id=c('t'))

xs <- c(0.25,0.5,1.0,2.0,4.0,8.0)
levels(mdf$variable) <- xs

g <- ggplot(mdf,aes(variable,value,group=variable,colour=t))
g +
    geom_point() +
    #scale_x_continuous() +
    opts()

制作此图。

enter image description here

“变量”数量在图上均匀分布,即使在数字上这不是真的。如何才能使x轴上的间距正确?

2 个答案:

答案 0 :(得分:13)

我认为你只需将变量转换为数字就可以做到这一点:

mdf$variable <- as.numeric(as.character(mdf$variable))

g <- ggplot(mdf,aes(variable,value,group=variable,colour=t))
g +
    geom_point() +
    #scale_x_continuous() +
    opts()

答案 1 :(得分:3)

您需要将您的因子转换为数字:

mdf$numVariable <- as.numeric(as.character(mdf$variable))

g <- ggplot(mdf,aes(numVariable,value,group=variable,colour=t))
g +
    geom_point() +
    #scale_x_continuous() +
    opts()

或者只是在调用ggplot中进行转换:

g <- ggplot(mdf,aes(as.numeric(as.character(variable)),value,group=variable,colour=t))