基于条件的ggplot标签颜色
ggplot label color based on condition
我正在尝试根据条件更改颜色 geom_label_repel。例如:
res <- data.frame(group = c("Group 1", "Group 2", "Group 3", "Group 4", "Group 5"),
correlation = c(0.37,0.33,0.31,0.30,0.30))
res <- res %>%
arrange(desc(correlation))
res
group correlation
1 Group 1 0.37
2 Group 2 0.33
3 Group 3 0.31
4 Group 4 0.30
5 Group 5 0.30
我想标记相关值最高的三个组。然后,如果后续组之间的差异> 0.03,我想更改具有最高相关值的点的颜色。我的代码现在给了我这个情节
p <- res %>%
ggplot(aes(x = reorder(group, -correlation), y = correlation)) +
geom_point() +
geom_label_repel(data = slice_max(res, n = 3, correlation),
aes(label = group))
现在,我想更改第 1 组标签的颜色,因为它的相关值比第 2 组的相关值 > 0.03。任何帮助将不胜感激
我们可以根据条件添加一个辅助列来做到这一点:
library(tidyverse); library(ggrepel)
res <- res %>%
arrange(desc(correlation)) %>%
mutate(my_col = if_else(
row_number() == 1 & correlation > lead(correlation) + 0.03,
"highlight",
"other"
))
res %>%
ggplot(aes(x = group, y = correlation, color = my_col)) +
geom_point() +
geom_label_repel(data = slice_max(res, n = 3, correlation),
aes(label = group)) +
scale_color_manual(values = c("highlight" = "red", "other" = "black")) +
guides(color = "none") # optional, hides legend
我正在尝试根据条件更改颜色 geom_label_repel。例如:
res <- data.frame(group = c("Group 1", "Group 2", "Group 3", "Group 4", "Group 5"),
correlation = c(0.37,0.33,0.31,0.30,0.30))
res <- res %>%
arrange(desc(correlation))
res
group correlation
1 Group 1 0.37
2 Group 2 0.33
3 Group 3 0.31
4 Group 4 0.30
5 Group 5 0.30
我想标记相关值最高的三个组。然后,如果后续组之间的差异> 0.03,我想更改具有最高相关值的点的颜色。我的代码现在给了我这个情节
p <- res %>%
ggplot(aes(x = reorder(group, -correlation), y = correlation)) +
geom_point() +
geom_label_repel(data = slice_max(res, n = 3, correlation),
aes(label = group))
现在,我想更改第 1 组标签的颜色,因为它的相关值比第 2 组的相关值 > 0.03。任何帮助将不胜感激
我们可以根据条件添加一个辅助列来做到这一点:
library(tidyverse); library(ggrepel)
res <- res %>%
arrange(desc(correlation)) %>%
mutate(my_col = if_else(
row_number() == 1 & correlation > lead(correlation) + 0.03,
"highlight",
"other"
))
res %>%
ggplot(aes(x = group, y = correlation, color = my_col)) +
geom_point() +
geom_label_repel(data = slice_max(res, n = 3, correlation),
aes(label = group)) +
scale_color_manual(values = c("highlight" = "red", "other" = "black")) +
guides(color = "none") # optional, hides legend