R 使用ggplot2对具有线段的多直线打印图例重新排序

R 使用ggplot2对具有线段的多直线打印图例重新排序,r,ggplot2,legend,line-plot,R,Ggplot2,Legend,Line Plot,我有一个多线图,每一条线的一段都以与前面讨论的相同的方式突出显示 . 以下是可复制的示例: df <- data.frame(x = 1:100,y1 = rnorm(100,1,100),y2=rnorm(100,5,50),y3=rnorm(100,10,500),y4=rnorm(100,1,200),col1 = c(rep("red", 50), rep("black", 10), rep("red", 40)),col2=c(rep("blue", 50), rep("blac

我有一个多线图,每一条线的一段都以与前面讨论的相同的方式突出显示 . 以下是可复制的示例:

df <- data.frame(x = 1:100,y1 = rnorm(100,1,100),y2=rnorm(100,5,50),y3=rnorm(100,10,500),y4=rnorm(100,1,200),col1 = c(rep("red", 50), rep("black", 10), rep("red", 40)),col2=c(rep("blue", 50), rep("black", 10), rep("blue", 40)),col3=c(rep("orange", 50), rep("black", 10), rep("orange", 40)),col4=c(rep("cyan", 50), rep("black", 10), rep("cyan", 40)))

ggplot(df, aes(x=x, y=y1)) + geom_line(aes(colour=col1, group=1))+geom_line(aes(x=x, y=y2,col=col2,group=1))+geom_line(aes(x=x, y=y3,col=col3,group=1))+geom_line(aes(x=x, y=y4,colour=col4, group=1))+geom_line(aes(x=x, y=y4,col=col4,group=1))+scale_color_manual(values=c("black","blue","red","orange","cyan"),labels=c("new","s1on","s2off","s2_on","s1_off"),name="")

df这可能就是你要找的

 ggplot(df, aes(x=x, y=y1)) + 
  geom_line(aes(colour=col1, group=1)) +
  geom_line(aes(x=x, y=y2,col=col2,group=1)) +
  geom_line(aes(x=x, y=y3,col=col3,group=1)) +
  geom_line(aes(x=x, y=y4,colour=col4, group=1)) +
  geom_line(aes(x=x, y=y4,col=col4,group=1)) +
  scale_color_manual(breaks = c("blue","orange","cyan","red","black"),
                     values=c("blue" = "blue", "red" = "red","orange" = "orange","cyan" = "cyan","black" = "black"),
                     labels=c("s1on","s2_on","s1_off","s2off","new"),name="")
您可以使用
中断
对图例重新排序。
values
参数将正确的颜色映射到正确的值

我更容易看到
df
中的值是否与您想要的颜色不同

df <- data.frame(x = 1:100,
             y1 = rnorm(100,1,100),
             y2=rnorm(100,5,50),
             y3=rnorm(100,10,500),
             y4=rnorm(100,1,200),
             col1 = c(rep("rrr", 50), 
                      rep("bbb", 10), 
                      rep("rrr", 40)),
             col2=c(rep("blbl", 50), 
                    rep("bbb", 10), 
                    rep("blbl", 40)),
             col3=c(rep("ooo", 50),
                    rep("bbb", 10), 
                    rep("ooo", 40)),
             col4=c(rep("ccc", 50), 
                    rep("bbb", 10), 
                    rep("ccc", 40)))

ggplot(df, aes(x=x, y=y1)) + 
  geom_line(aes(colour=col1, group=1)) +
  geom_line(aes(x=x, y=y2,col=col2,group=1)) +
  geom_line(aes(x=x, y=y3,col=col3,group=1)) +
  geom_line(aes(x=x, y=y4,colour=col4, group=1)) +
  geom_line(aes(x=x, y=y4,col=col4,group=1)) +
  scale_color_manual(breaks = c("blbl","ooo","ccc","rrr","bbb"),
                 values=c("blbl" = "blue", "rrr" = "red","ooo" = "orange","ccc" = "cyan","bbb" = "black"),
                 labels=c("s1on","s2_on","s1_off","s2off","new"),name="")

df这可能就是你要找的

 ggplot(df, aes(x=x, y=y1)) + 
  geom_line(aes(colour=col1, group=1)) +
  geom_line(aes(x=x, y=y2,col=col2,group=1)) +
  geom_line(aes(x=x, y=y3,col=col3,group=1)) +
  geom_line(aes(x=x, y=y4,colour=col4, group=1)) +
  geom_line(aes(x=x, y=y4,col=col4,group=1)) +
  scale_color_manual(breaks = c("blue","orange","cyan","red","black"),
                     values=c("blue" = "blue", "red" = "red","orange" = "orange","cyan" = "cyan","black" = "black"),
                     labels=c("s1on","s2_on","s1_off","s2off","new"),name="")
您可以使用
中断
对图例重新排序。
values
参数将正确的颜色映射到正确的值

我更容易看到
df
中的值是否与您想要的颜色不同

df <- data.frame(x = 1:100,
             y1 = rnorm(100,1,100),
             y2=rnorm(100,5,50),
             y3=rnorm(100,10,500),
             y4=rnorm(100,1,200),
             col1 = c(rep("rrr", 50), 
                      rep("bbb", 10), 
                      rep("rrr", 40)),
             col2=c(rep("blbl", 50), 
                    rep("bbb", 10), 
                    rep("blbl", 40)),
             col3=c(rep("ooo", 50),
                    rep("bbb", 10), 
                    rep("ooo", 40)),
             col4=c(rep("ccc", 50), 
                    rep("bbb", 10), 
                    rep("ccc", 40)))

ggplot(df, aes(x=x, y=y1)) + 
  geom_line(aes(colour=col1, group=1)) +
  geom_line(aes(x=x, y=y2,col=col2,group=1)) +
  geom_line(aes(x=x, y=y3,col=col3,group=1)) +
  geom_line(aes(x=x, y=y4,colour=col4, group=1)) +
  geom_line(aes(x=x, y=y4,col=col4,group=1)) +
  scale_color_manual(breaks = c("blbl","ooo","ccc","rrr","bbb"),
                 values=c("blbl" = "blue", "rrr" = "red","ooo" = "orange","ccc" = "cyan","bbb" = "black"),
                 labels=c("s1on","s2_on","s1_off","s2off","new"),name="")

df啊..没那么难!我没有想到我可以这样定义它。谢谢!谢谢。你。这么多。啊……没那么难!我没有想到我可以这样定义它。谢谢!谢谢,非常感谢。