我的代码是:
library(dplyr)
library(ggplot2)
library(pwt10)
p1 <- pwt10.0 %>%
mutate(my_color = ifelse(isocode == "KOR","Korea", "Other")) %>%
ggplot(aes(year, labsh, group = isocode, color = my_color))+
geom_line() +
scale_color_manual(values = c("black", "grey", "white"))+
xlim(1980,1997)
p1
结果是:
我想知道是否有一种方法可以删除所有“几乎平坦”的灰色线条,并使黑色线条突出(目前它被其他灰色线条所覆盖)。
发布于 2021-07-11 16:46:40
下面的代码将把blackline放在最上面。
p1 <- pwt10.0 %>%
select(year, labsh, isocode) %>%
mutate(my_color = ifelse(isocode == "KOR", "Korea", "Other")) %>%
na.omit() %>%
ggplot(aes(year, labsh, group = isocode, color = my_color)) +
geom_line(data = . %>% filter(isocode != "KOR")) +
geom_line(data = . %>% filter(isocode == "KOR")) +
scale_color_manual(values = c("black", "grey")) +
labs(color = "Country") +
xlim(1980,1997)
p1
至于平坦的线,它们几乎是平的,但只有3条是水平的:
pwt10.0 %>%
select(year, labsh, isocode) %>%
na.omit() %>%
group_by(isocode) %>%
summarise(flat = diff(range(labsh)),
flat = isTRUE(all.equal(flat, 0))) %>%
filter(flat)
## A tibble: 3 x 2
# isocode flat
# <fct> <lgl>
#1 LBN TRUE
#2 STP TRUE
#3 TGO TRUE
在注释之后,下面的代码删除了扁平线。
p2 <- pwt10.0 %>%
select(year, labsh, isocode) %>%
na.omit() %>%
group_by(isocode) %>%
mutate(slope = diff(range(labsh, na.rm = TRUE)),
flat = isTRUE(all.equal(slope, 0))) %>%
filter(!flat) %>%
filter(abs(slope) >= 0.15) %>%
select(-flat, -slope) %>%
ungroup() %>%
mutate(my_color = ifelse(isocode == "KOR", "Korea", "Other")) %>%
ggplot(aes(year, labsh, group = isocode, color = my_color)) +
geom_line(data = . %>% filter(isocode != "KOR")) +
geom_line(data = . %>% filter(isocode == "KOR")) +
scale_color_manual(values = c("black", "grey")) +
labs(color = "Country") +
xlim(1980,1997)
p2
https://stackoverflow.com/questions/68337835
复制相似问题