R ggplot图例:自动图例的更改顺序

R ggplot图例:自动图例的更改顺序,r,ggplot2,legend,R,Ggplot2,Legend,当有几组情节时,我正在努力处理ggplot中的传奇顺序。以下是一个例子: library(ggplot2) library(data.table) data <- data.table(time = rep(1:50,4),dampingtime = rep(c(4,8,12,16),each = 50), excitation = rep(c(rep(0,10),rep(1,10),rep(0,30)),4)) data[,signal := tim

当有几组情节时,我正在努力处理ggplot中的传奇顺序。以下是一个例子:

library(ggplot2)
library(data.table)
data <- data.table(time = rep(1:50,4),dampingtime = rep(c(4,8,12,16),each = 50),
                   excitation = rep(c(rep(0,10),rep(1,10),rep(0,30)),4))
data[,signal := time + .GRP, by = dampingtime]
data[,dampingtime := as.factor(dampingtime)]
我也这样做了,当我这样做的时候,我得到了正确的图例顺序

ggplot(data = data) +
geom_point(aes(time,signal,color = dampingtime)) 
我的问题是,我想在图例中添加带有条目的激励列,因此我会:

ggplot(data = data) +
geom_line(aes(time,excitation,color = "excitation")) +
geom_point(aes(time,signal,color = dampingtime)) 
在这种情况下,编号的顺序是错误的:

在Greor的评论之后,我给因子水平添加了激励

data[,dampingtime := factor(dampingtime,levels = c(levels(dampingtime),"excitation"))]
levels(data$dampingtime)
[1] "4"          "8"          "12"         "16"         "excitation"

但我遇到了完全相同的问题。如何获得正确的顺序?

您可以通过指定
scale\u color\u discrete

ggplot(data = data) +
 geom_line(aes(time,excitation,color = "excitation")) +
 geom_point(aes(time,signal,color = dampingtime)) +
 scale_colour_discrete(breaks=c("4","8","12","16","excitation"), labels=c(4,8,12,16,"excitation"))

激励
作为您的
阻尼时间
因子的一个级别,按您想要的顺序添加。您不需要对某个级别进行观察就可以将其包含在级别中,例如
因子(c(“a”、“b”)、级别=c(“z”、“a”、“b”))
。谢谢,但它不起作用。见我编辑的答案
ggplot(data = data) +
 geom_line(aes(time,excitation,color = "excitation")) +
 geom_point(aes(time,signal,color = dampingtime)) +
 scale_colour_discrete(breaks=c("4","8","12","16","excitation"), labels=c(4,8,12,16,"excitation"))