gpt4 book ai didi

r - 如何控制在ggplot2中首先绘制哪个因素?

转载 作者:行者123 更新时间:2023-12-04 09:38:46 25 4
gpt4 key购买 nike

d1 <- data.frame(x = runif(n = 10000, min = 0, max = 1), y = 
rnorm(10000, sd = 0.2), type = "d1")
d2 <- data.frame(x = runif(n = 10000, min = 0, max = 1), y =
rnorm(10000, mean = 0.2, sd = 0.2), type = "d2")
all_d <- rbind(d1, d2)
ggplot(all_d, aes(x = x, y = y, color = type)) + geom_point()

enter image description here

在这里你可以看到 d2点绘制在 d1 上点。所以我尝试使用 forcats::fct_relevel 改变东西
all_d_other <- all_d
all_d_other$type <- forcats::fct_relevel(all_d_other$type, "d2", "d1")
ggplot(all_d_other, aes(x = x, y = y, color = type)) + geom_point()

enter image description here

d2点数还在 d1之上点。有没有办法改变它,以便 d1点在 d2 之上点?

最佳答案

只需更改您的排序顺序,以便您想要的点位于数据框的最后一行。

all_d <- all_d[order(all_d$type, decreasing=TRUE),]

ggplot(all_d, aes(x = x, y = y, color = type)) +
geom_point()

其他排序方式见 dplyr::arrange 或非常快 data.table::setorder .

另一个解决方案,有点hacky:

您可以重新绘制 d1,以便它们显示在顶部。
ggplot(all_d, aes(x = x, y = y, color = type)) + 
geom_point()+
geom_point(data=all_d[all_d$type=='d1',]) # re-draw d1's

结果(无论哪种方式)

enter image description here

关于r - 如何控制在ggplot2中首先绘制哪个因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com