【问题标题】:How do I get discrete factor levels to be treated as continuous?如何将离散因子水平视为连续的?
【发布时间】:2011-09-17 04:43:29
【问题描述】:

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

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

这个情节被制作出来了。

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

【问题讨论】:

  • 另外,间隔良好的代码更易于阅读

标签: r ggplot2 dataframe r-factor


【解决方案1】:

我认为您只需将变量转换为数字即可:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多