我使用geom_line显示不同国家的比率。是否有办法避免国家标签相互重叠,或将重叠的国家标签横向移动一些。
ggplot(df,aes(x=year, y = value, group = country, colour=country) ) +
geom_line(size=1.3) +
geom_text(data = df %>% filter(year == last(year)), aes(label = country,
x = year + 0.5,
y = value,
color = country), size=3) +
guides(color = FALSE) + theme_bw()

以下是数据:
df<- structure(list(year = c(2015, 2020, 2025, 2030, 2035, 2015, 2020,
2025, 2030, 2035, 2015, 2020, 2025, 2030, 2035, 2015, 2020, 2025,
2030, 2035, 2015, 2020, 2025, 2030, 2035, 2015, 2020, 2025, 2030,
2035, 2015, 2020, 2025, 2030, 2035, 2015, 2020, 2025, 2030, 2035,
2015, 2020, 2025, 2030, 2035, 2015, 2020, 2025, 2030, 2035, 2015,
2020, 2025, 2030, 2035, 2015, 2020, 2025, 2030, 2035, 2015, 2020,
2025, 2030, 2035, 2015, 2020, 2025, 2030, 2035, 2015, 2020, 2025,
2030, 2035, 2015, 2020, 2025, 2030, 2035, 2015, 2020, 2025, 2030,
2035, 2015, 2020, 2025, 2030, 2035), country = structure(c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L,
7L, 7L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L,
10L, 10L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 13L,
13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L,
15L, 16L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L, 17L, 18L, 18L,
18L, 18L, 18L), .Label = c("USA", "CAN", "MEX", "JPN", "ANZ",
"EUR", "ROE", "RUS", "ASI", "CHN", "IND", "BRA", "AFR", "MES",
"LAM", "REA", "KOR", "IDZ"), class = "factor"), value = c(19.35,
17.77, 16.19, 15.07, 13.7, 17.91, 16.3, 14.7, 13.58, 12.58, 17.91,
16.3, 14.7, 13.58, 12.58, 0.91, 5.9, 10.88, 17.41, 16.93, NA,
NA, NA, NA, NA, 26.79, 24, 21.22, 19.15, 17.24, 11.11, 11.16,
11.2, 10.93, 11.16, 18.53, 17.41, 16.29, 16.63, 19.26, 4.05,
4.78, 5.51, 6.42, 6.95, 2.9, 3.97, 5.04, 6.32, 7.67, 2.71, 2.69,
2.68, 3.34, 4.09, 2.53, 2.34, 2.14, 3.23, 4.25, 1.54, 1.42, 1.3,
2.13, 2.1, 0.26, 1.83, 3.4, 3.05, 3.99, 0.8, 0.76, 0.72, 0.91,
1.38, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA)), row.names = c(NA, -90L), class = c("tbl_df", "tbl", "data.frame"
))发布于 2021-03-23 14:43:04
如果在调用check_overlap = TRUE时使用参数geom_text,那么就会丢失重叠,但也会丢失重叠标签之一;我想这不是您想要的,但万一是这样的话:这是代码和结果的情节:
ggplot(df,aes(x = year, y = value, group = country, colour = country) ) +
geom_line(size = 1.3) +
geom_text(data = df %>% filter(year == last(year)),
aes(label = country, x = year+0.5, y = value, color = country),
size = 3,
check_overlap = TRUE) + ###### Here is the change #######
guides(color = FALSE) +
theme_bw()

您可以看到,例如,在3行顶部,EUR的标签缺失(由于check_overlap,该标签已被设置为“TRUE”)。
作为另一种,您可以使用以下代码。在这里,geom_text()被geom_text_repel替换,参数保持不变。后一项职能是根据小插曲进行下列工作:
文本标签彼此排斥,远离数据点。
以下代码.:
ggplot(df,aes(x = year, y = value, group = country, colour = country) ) +
geom_line(size = 1.3) +
geom_text_repel(data = df %>% filter(year == last(year)), #### here ####
aes(label = country, x = year+0.5, y = value, color = country), size = 3) +
guides(color = FALSE) +
theme_bw()..。产生以下情节:

你可以和hjust和vjust玩上几周,就像它说的那样:
拜托,让我知道这是不是你想要的。
https://stackoverflow.com/questions/66765232
复制相似问题