gpt4 book ai didi

r - ggplot以特定顺序将多个geom_points分层放置在彼此之上

转载 作者:行者123 更新时间:2023-12-04 08:08:32 27 4
gpt4 key购买 nike

ID <- rep(c('A','B'),each = 10)
x <- rep(1,10)
y <- 1:10
have <- tibble(x, y)
have <- cbind(ID,rbind(have,have))

have %>%
ggplot(aes(x, y, color = ID)) +
geom_point() + theme_bw()

enter image description here
请注意,仅仅因为 ID B后来基于数据帧排序,它将被绘制在 ID A 之上。 .
为了确认这种行为,我只需要切换顺序

ID <- rep(c('B','A'),each = 10)
x <- rep(1,10)
y <- 1:10
have <- tibble(x, y)
have <- cbind(ID,rbind(have,have))

have %>%
ggplot(aes(x, y, color = ID)) +
geom_point() + theme_bw()
enter image description here
在某些情况下,解决方案可能会抖动这些点,但我真正想要的是在这些点上强制执行命令。
例如,如果我决定 B 是 more important比 A,因此在所有情况下,如果这些点中的任何一个相互重叠,B 将始终位于 A 之上。
有没有办法执行这个规则?我正在考虑将 geom_points 一层一层地分层。
例如,如果我希望 B 位于 A 之上,则必须先创建一个仅包含点 A 的 ggplot geom_point,然后再创建另一个带有 B 的 geom_point 图层。
但这证明效率不高,应该说 10 种不同的 ID .有没有更好的办法?
# layer A first then B
Apoint %>%
ggplot(aes(x, y, color = ID)) +
geom_point() + theme_bw() +
geom_point(data = Bpoint)

# layer B first then A
Bpoint %>%
ggplot(aes(x, y, color = ID)) +
geom_point() + theme_bw() +
geom_point(data = Apoint)

在下面的图表中,当橙色点重叠时,它们压倒了红色点。
我想确保当它们重叠时,某些颜色(基于因子级别)应该优先于其他颜色。
enter image description here

最佳答案

这是一种方法,将重要性编码为变量,按其排序,然后绘制:

library(tidyverse)

ID <- rep(c('A','B'),each = 10)
x <- rep(1,10)
y <- 1:10
have <- tibble(ID,
x = rep(x, 2),
y = rep(y, 2),
importance = c(1:10, 10:1))

have %>%
arrange(importance) %>%
ggplot(aes(x, y, color = ID)) +
geom_point() + theme_bw()
enter image description here

关于r - ggplot以特定顺序将多个geom_points分层放置在彼此之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66096298/

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