在ggplot中重新排序X轴上的项目

时间:2017-08-23 15:52:10

标签: r

我的图表看起来像:

this

我希望按时间顺序排列日期,但我真的无法弄清楚如何。制作图表的代码如下:

label1 <- data.frame( x = 1,  y = 4, label = "")
label2 <- data.frame( x = 2, y = -4,  label = "")

ggplot(data = Q10, mapping = aes(y = Rating, x = Week, group= StudentFactor, colour=StudentFactor))+
  geom_point()+
  geom_line()+
  geom_smooth(method = 'loess',  colour= "black", aes(group=1), se= FALSE)+
  theme(legend.position="none") +
  labs (x= "Date", y="Q10 Percieved Ability to Manage Workload")+
  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)

我已经尝试了Q10$Week <- factor(Q10$Week, ordered = TRUE, levels = c("Jan25-Feb 1", "Feb 8-Mar 1", "Mar 8- Mar 22", "Mar 29-Apr 5")),但奇怪的是只删除了一周内的所有内容。

任何帮助都会很棒!谢谢!

请在下面找到我的数据:

> dput(Q10)
structure(list(StudentFactor = structure(c(1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 
6L, 6L, 6L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L, 
10L, 10L, 10L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 13L, 13L, 
13L, 13L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L, 16L, 16L, 16L, 
16L, 17L, 17L, 17L, 17L, 18L, 18L, 18L, 18L, 19L, 19L, 19L, 19L, 
20L, 20L, 20L, 20L, 21L, 21L, 21L, 21L, 22L, 22L, 22L, 22L, 23L, 
23L, 23L, 23L, 24L, 24L, 24L, 24L, 25L, 25L, 25L, 25L, 26L, 26L, 
26L, 26L, 27L, 27L, 27L, 27L, 28L, 28L, 28L, 28L, 29L, 29L, 29L, 
29L, 30L, 30L, 30L, 30L, 31L, 31L, 31L, 31L, 32L, 32L, 32L, 32L, 
33L, 33L, 33L, 33L, 34L, 34L, 34L, 34L, 35L, 35L, 35L, 35L, 36L, 
36L, 36L, 36L, 37L, 37L, 37L, 37L, 38L, 38L, 38L, 38L, 39L, 39L, 
39L, 39L, 40L, 40L, 40L, 40L, 41L, 41L, 41L, 41L), .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"), 
    Question = c("Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", "Q10", 
    "Q10", "Q10", "Q10", "Q10"), Type = c("SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", "SNR", 
    "SNR", "SNR", "SNR", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", 
    "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", 
    "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", 
    "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", 
    "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", 
    "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", 
    "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", 
    "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS", "FYS"), 
    College = c("CBS", "CBS", "CBS", "CBS", "CA", "CA", "CA", 
    "CA", "CBS", "CBS", "CBS", "CBS", "CBS", "CBS", "CBS", "CBS", 
    "CBS", "CBS", "CBS", "CBS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", 
    "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", 
    "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CBS", "CBS", 
    "CBS", "CBS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CBS", 
    "CBS", "CBS", "CBS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", 
    "OAC", "OAC", "OAC", "OAC", "CBS", "CBS", "CBS", "CBS", "CSAHS", 
    "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", 
    "CBS", "CBS", "CBS", "CBS", "CPES", "CPES", "CPES", "CPES", 
    "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CBS", "CBS", "CBS", 
    "CBS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", 
    "CSAHS", "CSAHS", "CPES", "CPES", "CPES", "CPES", "N/A", 
    "N/A", "N/A", "N/A", "CBS", "CBS", "CBS", "CBS", "CSAHS", 
    "CSAHS", "CSAHS", "CSAHS", "CBS", "CBS", "CBS", "CBS", "CBS", 
    "CBS", "CBS", "CBS", "CBE", "CBE", "CBE", "CBE", "CSAHS", 
    "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", "CSAHS", 
    "CBE", "CBE", "CBE", "CBE", "CSAHS", "CSAHS", "CSAHS", "CSAHS", 
    "CBE", "CBE", "CBE", "CBE", "CPES", "CPES", "CPES", "CPES", 
    "CSAHS", "CSAHS", "CSAHS", "CSAHS", "OAC", "OAC", "OAC", 
    "OAC", "CBE", "CBE", "CBE", "CBE", "CBE", "CBE", "CBE", "CBE", 
    "CBE", "CBE", "CBE", "CBE"), Bin = c("Bin 1", "Bin 2", "Bin 3", 
    "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", 
    "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", 
    "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", 
    "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", 
    "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", 
    "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", 
    "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", 
    "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", 
    "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", 
    "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", 
    "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", 
    "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", 
    "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", 
    "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", 
    "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", 
    "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", 
    "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", 
    "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", 
    "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", 
    "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", 
    "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", 
    "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4", "Bin 1", 
    "Bin 2", "Bin 3", "Bin 4", "Bin 1", "Bin 2", "Bin 3", "Bin 4"
    ), Week = c("Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5", "Jan25-Feb 1", "Feb 8- Mar 1", "Mar 8- Mar 22", 
    "Mar 29-Apr 5"), Rating = c(0, -1, -1, -0.5, 0, -1, -4, -2, 
    -1, -1.6666667, -2, -2, 0, -0.3333333, -1, -1, 0, -0.3333333, 
    -1, -1, 0, -0.3333333, 0, 0, -1, -0.3333333, 0, -0.5, 0, 
    0, 0, 0, -1, -1, -1, -1, 0, -0.3333333, -0.3333333, -0.5, 
    0, -0.3333333, -0.6666667, -1, 0, -1, -1, -1, 1, 1, 0.6666667, 
    1, 1, 0, -0.3333333, -0.5, 0, 0, 0, 1, 0, -0.6666667, -0.3333333, 
    -1, 0, 0, 0, 0.5, 0.5, -1, -1.3333333, -0.5, 0.5, 0.6666667, 
    1, 1, 0, -0.6666667, -2, -1.5, 1.5, 0.3333333, 0.3333333, 
    0, -1, -1, -1.3333333, -1.5, -1, -0.3333333, 0, 1, 1, 0, 
    0.6666667, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0.3333333, 0, 0, 0, 1.6666667, 2, 0.5, 0, 0, 0, 0, -0.6666667, 
    -2, -0.5, 1, 0.3333333, -1, -1, 1, 0.3333333, 0, 1, 0, -1, 
    -3.6666667, -3, 0, 0, 0.6666667, 1, 0, -0.3333333, -1.3333333, 
    -2.5, 0, 0, 0, 0, 1, 1, 1.6666667, 2, -1, -1, -1, -1, 2, 
    0, 0, 0, 0, -0.3333333, -2, -2)), .Names = c("StudentFactor", 
"Question", "Type", "College", "Bin", "Week", "Rating"), row.names = c(NA, 
-164L), class = c("tbl_df", "tbl", "data.frame"))

1 个答案:

答案 0 :(得分:0)

以下是您的解决方案:

Q10$Week <- gsub(" ", "", Q10$Week, fixed = TRUE)
Q10$Week <- factor(Q10$Week, ordered = TRUE, levels = c("Jan25-Feb1", "Feb8-Mar1", "Mar8-Mar22", "Mar29-Apr5"))

问题是列周的数据格式不正确!即使是相同的因子/值,您也有太多的空白区域和不同的位置。例如,在您的数据中,您有一个值:"Feb 8- Mar 1",但您设置的级别为"Feb 8-Mar 1",这是不正确的(在-签到数据后有空格)。 ..无论如何,我的解决方案是使用gsub函数删除列Week中的所有空格并进一步排序数据。

使用正确的fomratted数据和你的ggplot代码:

label1 <- data.frame( x = 1,  y = 4, label = "")
label2 <- data.frame( x = 2, y = -4,  label = "")
ggplot(data = Q10, mapping = aes(y = Rating, x = Week, group= StudentFactor, colour=StudentFactor))+
  geom_point()+
  geom_line()+
  geom_smooth(method = 'loess',  colour= "black", aes(group=1), se= FALSE)+
  theme(legend.position="none") +
  labs (x= "Date", y="Q10 Percieved Ability to Manage Workload")+
  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)

我得到了这个格式有序的x轴:

enter image description here