Хотя может показаться, что этот вопрос задан много раз, по-видимому, он не имеет (или, по крайней мере, я не могу найти ответ). У меня есть несколько разрозненных фреймов данных, из которых я создаю один ggplot, каждый dataframe предоставляет точки или строки. Я хотел бы переупорядочить легенду, чтобы (в приведенном ниже примере) «точки» выше «lm», но команда «+ guide (guide = guide_legend (reverse = TRUE))« похоже, не работает.Изменить порядок легенд ggplot2 без использования одного основного блока данных?
Любые идеи очень ценятся.
Большое спасибо.
Coding выглядит следующим образом:
`library("ggplot2")
nnn <- "Name"
xx<-c(1:27)
newdata<-c(2732, 2900, 3032, 2811, 2657, 2530, 2521, 2615, 2807, 3022, 3125, 3200, 3308, 3739, 4601, 4236, 3655, 3781, 4119, 4437, 4615, 5009, 5445, 5641, 5623, 5740, 6072)
Data111yyxx<-data.frame(xx, newdata)
names(Data111yyxx) <- c("xx", "newdata")
Datalm <- lm(newdata ~ xx, data = Data111yyxx)
windows()
p1 <- ggplot() + ggtitle("mag") + theme(plot.title = element_text(size = 10)) + coord_cartesian(xlim = c(0, 30), ylim = c(0, 8000)) + scale_x_continuous(breaks = c(0, 10, 20, 30), labels = c("0", "10", "20", "30"), expand = c(0, 0)) + scale_y_continuous(breaks = c(0, 4000, 8000), labels = c("0", "4000", "8000"), expand = c(0, 0)) + ylab("Yy") + xlab("Xx") + geom_point(data = Data111yyxx, aes(x = Data111yyxx[ , 1], y = Data111yyxx[ , 2], colour = "points", shape = "points", linetype = "points"))
xgridA <- data.frame(xx = c(seq(min(xx), max(xx), length.out = 100)))
fhatA <- as.vector(predict(Datalm, newdata = xgridA))
dataframexgridA <- data.frame(xgridA, fhatA)
colnames(dataframexgridA) <- c("xxforfit", "gomforfit")
xgridAA <- as.vector(unlist(xgridA))
q2 <- p1 + geom_line(data = dataframexgridA, aes(x = xgridAA, y = fhatA, colour = "lm", shape = "lm", linetype = "lm")) + scale_colour_manual(' ', values = c("points" = "black", "lm" = "black")) + scale_shape_manual(' ', values = c("points" = 16, "lm" = NA)) + scale_linetype_manual(' ', values = c("points" = 0, "lm" = 1)) + guides(guide = guide_legend(reverse = TRUE))
q2
`
Мне кажется, ваши делают вашу жизнь немного слишком трудно. Следующее может сделать трюк: 'ggplot (data = Data111yyxx, aes (x = xx, y = newdata)) + geom_point() + geom_smooth (method =" lm ", se = FALSE) + xlim (c (0, 30)) + ylim (c (0, 8000)) ' –