简体   繁体   English

改变X轴上离散变量的顺序--R

[英]Changing the order of discrete variables on the X axis --R

I am using the following code to make my graph: 我使用以下代码来制作我的图表: 我的图表 .

   #Labels
    label1 <- data.frame( x = 2,  y = 2,  Type = "FYS",  label = "N=15")
    label2 <- data.frame( x = 2, y = 2,  Type = "SNR", label = "N=24")

# make graph
ggplot(data = Q, mapping = aes(y = Rating, x = weeks, group= StudentFactor, colour=StudentFactor))+
  geom_point()+
  geom_line()+
  facet_grid(Type ~.)+
  geom_smooth(method = 'lm', formula = y ~ poly(x), colour= "black", aes(group=1), se= FALSE)+
  theme(legend.position="none") +
  labs (x= "Date", y="Students' Average Engagement over Time")+
  geom_text(data = label1, aes(x = x, y = y, label = label), inherit.aes = FALSE)+
  geom_text(data = label2, aes(x = x, y = y, label = label), inherit.aes = FALSE)

However, the dates at the bottom are out of order. 但是,底部的日期不正常。 Instead of using x= weeks , I could use x=timePeriod which would make the points be in order, but the labels to be wrong. 而不是使用x= weeks ,我可以使用x=timePeriod ,这将使得点有序,但标签是错误的。 I have tried adding the following code to order the levels of weeks, 我尝试添加以下代码来订购周级别,

df$weeks <- factor(df$weeks, order=TRUE, levels=weeks)

but I keep getting an error saying object of type 'closure' is not subsettable . 但我一直收到一个错误,说object of type 'closure' is not subsettable

I have attached my data below: 我在下面附上了我的数据:

> dput (Q)
structure(list(StudentFactor = structure(c(1L, 3L, 4L, 8L, 11L, 
13L, 14L, 15L, 18L, 19L, 21L, 22L, 24L, 30L, 31L, 32L, 36L, 38L, 
27L, 34L, 35L, 1L, 3L, 4L, 8L, 11L, 13L, 14L, 18L, 19L, 21L, 
22L, 24L, 2L, 5L, 6L, 7L, 9L, 10L, 12L, 16L, 17L, 20L, 23L, 25L, 
26L, 28L, 29L, 30L, 31L, 32L, 33L, 36L, 37L, 38L, 40L, 41L, 34L, 
39L, 1L, 3L, 4L, 8L, 11L, 13L, 14L, 15L, 18L, 19L, 21L, 24L, 
2L, 5L, 6L, 7L, 9L, 10L, 12L, 16L, 17L, 20L, 23L, 25L, 28L, 30L, 
31L, 33L, 36L, 37L, 38L, 40L, 41L, 34L, 35L, 39L, 1L, 3L, 4L, 
8L, 11L, 14L, 15L, 18L, 21L, 22L, 24L, 2L, 6L, 7L, 9L, 10L, 12L, 
16L, 17L, 20L, 23L, 31L, 33L, 36L, 37L, 40L, 27L, 34L, 1L, 3L, 
4L, 8L, 11L, 13L, 14L, 15L, 18L, 19L, 21L, 22L, 2L, 5L, 6L, 7L, 
9L, 10L, 12L, 16L, 17L, 20L, 23L, 28L, 30L, 31L, 32L, 33L, 36L, 
38L, 41L, 27L, 34L, 35L, 1L, 3L, 4L, 11L, 14L, 15L, 18L, 19L, 
21L, 22L, 24L, 2L, 5L, 6L, 9L, 10L, 12L, 16L, 20L, 23L, 29L, 
30L, 31L, 32L, 33L, 36L, 38L, 41L, 27L, 34L, 35L, 1L, 3L, 11L, 
13L, 14L, 15L, 18L, 19L, 21L, 22L, 24L, 2L, 6L, 7L, 9L, 10L, 
12L, 16L, 17L, 20L, 23L, 28L, 29L, 30L, 31L, 36L, 37L, 38L, 40L, 
41L, 27L, 34L, 35L, 39L, 1L, 3L, 4L, 11L, 13L, 14L, 15L, 18L, 
19L, 21L, 22L, 24L, 2L, 7L, 10L, 12L, 16L, 17L, 20L, 28L, 29L, 
30L, 31L, 32L, 33L, 36L, 37L, 38L, 40L, 41L, 27L, 34L, 35L, 1L, 
11L, 13L, 14L, 18L, 19L, 21L, 22L, 24L, 2L, 6L, 7L, 10L, 12L, 
16L, 28L, 30L, 31L, 33L, 36L, 34L, 1L, 4L, 14L, 15L, 18L, 19L, 
21L, 22L, 24L, 2L, 7L, 9L, 10L, 12L, 16L, 17L, 20L, 23L, 29L, 
30L, 31L, 32L, 33L, 36L, 37L, 40L, 41L, 27L, 34L, 39L, 1L, 3L, 
4L, 11L, 13L, 14L, 15L, 18L, 22L, 24L, 2L, 6L, 7L, 9L, 10L, 12L, 
16L, 17L, 20L, 23L, 30L, 31L, 36L, 37L, 38L, 41L, 27L), .Label = c("789331", 
"796882", "805933", "826523", "827911", "830271", "831487", "832929", 
"834598", "836364", "838607", "839802", "841903", "843618", "852125", 
"855524", "873527", "876406", "879972", "885409", "885650", "888712", 
"894218", "903303", "928026", "932196", "952797", "955389", "956952", 
"957206", "957759", "959200", "962490", "965873", "967416", "968728", 
"969005", "971179", "975424", "976863", "981621"), class = "factor"), 
    Type = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("FYS", "SNR"), class = "factor"), 
    weeks = structure(c(5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 7L, 7L, 7L, 
    7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
    7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 8L, 8L, 8L, 
    8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
    8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
    9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
    9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Apr5", 
    "Feb1", "Feb15", "Feb8", "Jan11", "Jan25", "Mar1", "Mar15", 
    "Mar22", "Mar29", "Mar8"), class = "factor"), timePeriod = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
    7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
    7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 
    8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
    8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 
    9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
    9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
    11L), class = "factor", .Label = c("Rt1", "Rt2", "Rt3", "Rt4", 
    "Rt5", "Rt6", "Rt7", "Rt8", "Rt9", "Rt10", "Rt11")), Rating = c(3.6, 
    4.8, 4.4, 3.8, 5, 3.2, 4.4, 3.2, 3.6, 3.8, 4, 4.4, 3.6, 4, 
    3.8, 3, 3.6, 4.4, 3.6, 3.4, 4.2, 3.8, 4, 4.2, 3.8, 5, 4.2, 
    4.4, 4, 3.8, 4.4, 4, 3.8, 4.4, 4.2, 4.6, 4.4, 5, 4, 3.4, 
    5, 3.8, 4.8, 4.4, 4.6, 3.2, 5, 4.2, 4.4, 4.4, 3.4, 3.8, 3.8, 
    3.6, 4.8, 4.4, 4.8, 4.75, 4, 4, 4, 4.2, 3.8, 5, 4.2, 4.6, 
    3.8, 4.2, 3.8, 4, 4.6, 4, 3.6, 4.8, 4.2, 3.8, 4, 2, 4.6, 
    3.8, 4.6, 4.4, 4.8, 4.6, 4, 4.4, 4.2, 3.6, 4.6, 4.4, 5, 4.6, 
    5, 4.2, 3.4, 4.2, 3.6, 4.4, 4, 5, 4.4, 4, 4, 4, 4.2, 4, 4, 
    5, 4.6, 4, 4, 1.8, 4.6, 4.2, 4.8, 4.6, 4.4, 4.2, 3.4, 4.4, 
    3.8, 4, 5, 3.4, 3.2, 4.6, 3.6, 5, 3.6, 4.4, 3.8, 4, 4, 4.2, 
    4.4, 2.8, 3.4, 5, 4.4, 4.2, 3.6, 4.2, 4.2, 4, 4.4, 5, 4, 
    4, 3.8, 3.2, 4.2, 3.4, 4.4, 5, 4.4, 4, 4.2, 2.4, 3.2, 4.6, 
    4.4, 4.4, 3.6, 2.4, 4.2, 4, 4.4, 3.4, 3.6, 3.4, 4.4, 4, 3.2, 
    2.2, 4.4, 4.4, 5, 3.2, 4.4, 4, 3, 4.6, 3, 4.25, 4.2, 3.6, 
    3.8, 4.4, 3, 3.2, 4.2, 4, 4.4, 3.6, 2.8, 4, 4.4, 4.6, 3.8, 
    2.8, 4.8, 4.2, 4, 3.6, 3, 4.8, 4.2, 4.2, 5, 4.4, 4.4, 4, 
    3.2, 1, 4.4, 4.2, 3.6, 3.8, 4, 1.4, 4.6, 2.8, 3.2, 3.2, 4.6, 
    4.4, 3.4, 4.2, 4, 3.8, 4, 4.2, 3.8, 3.6, 1.4, 4.6, 3.6, 4.2, 
    4, 4.4, 4.4, 4.6, 4.2, 4.2, 3.2, 4, 3.6, 3, 4.6, 4.8, 3.6, 
    4.2, 4.2, 2.2, 5, 3.2, 3.8, 4.2, 3.6, 3, 4, 3.8, 4.2, 3.8, 
    2.2, 5, 4.8, 3.4, 2.8, 5, 4.4, 4, 3, 1, 3, 1.6, 3.6, 4.2, 
    4, 3.4, 3.2, 4, 4, 4, 3.6, 2, 4.4, 4, 3.4, 1.8, 4.2, 3.8, 
    3.8, 4, 4.2, 3.8, 4.2, 4.2, 3.2, 1.6, 4.6, 4, 5, 4, 3.4, 
    3.6, 4, 3.2, 4.2, 3.6, 4.6, 4.4, 4.6, 4.2, 4.6, 4.6, 4.2, 
    5, 4.6, 4.2, 4, 4, 4.6, 4.4, 3.6, 5, 4.4, 4.6, 1.6, 4.6, 
    5, 5, 4)), class = "data.frame", row.names = c(NA, -333L), .Names = c("StudentFactor", 
"Type", "weeks", "timePeriod", "Rating"))

I just changed the format of the week column. 我刚刚更改了周列的格式。 Does it work for you? 对你起作用吗?

newdate <- as.Date(Q[, 3], "%b%d")
newdate <- strftime(newdate,"%m %d")
QQ <- cbind(Q, newdate)
ggplot(data = QQ, mapping = aes(y = Rating, x = factor(newdate), group= StudentFactor, colour=StudentFactor))+
  geom_point()+
  geom_line()+
  facet_grid(Type ~.)+
  geom_smooth(method = 'lm', formula = y ~ poly(x), colour= "black", aes(group=1), se= FALSE)+
  theme(legend.position="none") +
  labs (x= "Date", y="Students' Average Engagement over Time")+
  geom_text(data = label1, aes(x = x, y = y, label = label), inherit.aes = FALSE)+
  geom_text(data = label2, aes(x = x, y = y, label = label), inherit.aes = FALSE)

没有更多的错误

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM