ggplot2线和点的绘制顺序

时间:2019-11-12 05:10:38

标签: r ggplot2

关于如何在ggplot2中的数据顶部绘制一条特定的线或点,这里有很多问题。当前,geom_point(取决于data.frame的实际顺序)和geom_line(取决于因子水平)的处理方式不同。

我想知道是否有人知道他们为什么与众不同,是否有任何计划来改变它们。我希望知道为什么,然后它可以使它更令人难忘,因为当前每次我想要更改打印顺序时,我都会感到沮丧。

基于几年前的这个问题,我举了一个例子来说明这一点

Change the overlaying order of lines in ggplot

请注意,我并不是在问怎么做(您可以在下面看到我知道如何做),而是要更多地了解为什么会这样(因此我不认为据我所知,这个问题是重复的)

library(ggplot2)
  #data
pl_data <- structure(list(x = c(1, 1.5, 2, 1, 1.3, 1.4, 1.51, 2, 1, 1.31, 2),
                          y = c(0, 0.5, 1, 1, 0.7, 0.7, 0.5, 0, 0.7, 0.7, 0.7),
                          col = c("r", "r", "r", "b", "b", "b", "b", "b", "g", "g", "g")), 
                     row.names = c(NA, -11L), class = c("tbl_df", "tbl", "data.frame"))


#starting plot
plt1 <- ggplot(pl_data, aes(x = x, y = y, color = col)) +
  geom_line(size = 3)+
  scale_colour_manual(values = c("r"="Red","b"="blue","g"="green"))

#change factor to change lines
pl_data2 <- pl_data
pl_data2$col <- factor(pl_data2$col, c("g", "r", "b"))

plt2 <- plt1 %+% pl_data2

#But the points are still the same way around as in original
plt1 + geom_point(size = 5)

plt2 + geom_point(size = 5)

#reorder data to chnage the points
pl_data3 <- pl_data2[order(pl_data2$col),]

plt3 <- plt1 %+% pl_data3
plt3+ geom_point(size = 5)

reprex package(v0.3.0)于2019-11-12创建

0 个答案:

没有答案