ggplot2 one line per each row dataframe

后端 未结 1 421
刺人心
刺人心 2020-12-10 08:38

I have a CSV file that contains the following data:

user,Measurement1,Measurement2,Measurement3,group
1,0.1,0.7,0.2,3
2,0.3,0.3,0.4,2
3,0.3,0.3,0.4,2
         


        
相关标签:
1条回答
  • 2020-12-10 09:27

    ggplot likes data in the 'long' format: i.e., a column for every dimension, and a row for every observation. Your data is currently 'wide'. Use the reshape package to go from one to the other.

    Do I understand correctly that you want Measurement1, Measurement2, and Measurement3 to be on the x-axis? (So that, in your data, user 1's line would go from 0.1 to 0.7 to 0.2? If so, you want something like this:

    require(reshape)
    
    #Recreate your data frame
    user <- gl(3, 1)
    Meas1 <- c(0.7, 0.3, 0.3)
    Meas2 <- c(0.7, 0.3, 0.3)
    Meas3 <- c(0.2, 0.4, 0.4)
    group <- c(3, 2, 2)
    df <- data.frame(user=user, Meas1=Meas1, Meas2=Meas2, Meas3=Meas3, group=group)
    
    #'melt' the data frame into long format
    dfm <- melt(df, id.vars=c("user", "group"))
    
    ggplot(dfm, aes(x=as.numeric(variable), y=value, colour=user)) + geom_line()
    

    enter image description here

    0 讨论(0)
提交回复
热议问题