关于如何在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创建