geom_point和geom_line的ggplot顺序不同

时间:2018-10-23 17:36:54

标签: r ggplot2

使用手动设置因子水平的顺序时,我无法同时使用geom_point和geom_line来按相同顺序绘制数据。

df <- data.frame(A=c(rep(c(5, 10, 15, 20, 25), 2)),
                 B=c(81, 86, 89, 94, 99, 81, 86, 89, 94, 100),
                 C=c(rep(0, 5), rep(1, 5)))
df$C <- factor(df$C, levels=c(1,0))

colors=c("red", "black")

ggplot(df, aes(A, B)) +
    geom_point(aes(color=C)) +
    geom_line(aes(color=C)) +
    scale_color_manual(values=colors)

enter image description here

我希望最后绘制C的0,geom_line在做,而geom_point不是。我不明白为什么。我怎样才能让他们俩合作?如果我没有设置df $ C的因子水平,而是使用dplyr :: arrange(desc(C)),它仍然不能解决差异。

我正在使用自己的调色板,但是即使使用默认颜色,也会出现此问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

将此行添加到数据帧准备中,以按C对数据帧进行排序,以使0出现在最后,最后被geom_point绘制(即在顶部)。

df <- df[order(df$C),]

enter image description here

答案 1 :(得分:0)

您可以更改进来的颜色

library(tidyverse)

colors=c("black", "red")

data.frame(A = c(rep(c(5, 10, 15, 20, 25), 2)),
           B = c(81, 86, 89, 94, 99, 81, 86, 89, 94, 100),
           C = c(rep(0, 5), rep(1, 5))) %>% 
  mutate(C = factor(C)) %>% 
  arrange(C) %>% 
ggplot(aes(A, B, color=C)) +
  geom_point() +
  geom_line() +
  scale_color_manual(values=colors) + 
  guides(color = guide_legend(reverse=TRUE))

enter image description here