gpt4 book ai didi

r - 折线图上的程序标签以避免线条 ggplot2

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

我很好奇是否有办法在 ggplot2 上的折线图上叠加标签以避免穿过这条线。我使用了 vjust,它在大多数情况下都可以使用,但是当两个日期之间有很大的增加或减少时,该行会穿过标签,使其难以阅读。我将把我目前正在使用的情节和代码放在下面。在这种情况下,我想移动 920; 1,467;和 1,480 下线。我正在通过 Reporters 包将情节导出到 powerpoint,所以我可以手动移动它,我只是想知道是否有办法避免这种情况。

阴谋:
enter image description here

代码:

library("ggplot2")
library("scales")

line_data <- c(276, 475, 753, 840, 931, 962, 801, 920, 1467, 1840, 1737, 1638, 1789, 1733, 1480, 1464, 1538)
year_data <- c(2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016,
2017)

line_data_total <- as.data.frame(cbind(line_data, year_data))

limit_func <- function(x) {
if (nchar(max(x)) == 2){
round(max(x +5), digits = -1)
} else if (nchar(max(x)) == 3){
round(max(x +50), digits = -2)
} else if (nchar(max(x)) == 4){
round(max(x +500), digits = -3)
}
}

ggplot(data = line_data_total, aes(x = year_data, y = line_data, group = 1)) +
geom_line(color = "red", size = 1.2)+
geom_point(color = "red", fill = "red", shape = 23, size = 1.75) +
geom_text(aes(label = paste0(format(round(as.numeric(line_data), 1), nsmall = 0, big.mark = ","))),
size = 3, fontface = "bold", vjust = -2) +
labs(x = '', y = '') +
expand_limits(y = c(0, limit_func(line_data_total$line_data))) +
scale_x_continuous(breaks = seq(min(line_data_total$year_data), max(line_data_total$year_data), 1)) +
scale_y_continuous(labels = comma) +
theme(panel.grid.major.x = element_blank() ,
panel.grid.major.y = element_line( size=.1, color="light gray"),
panel.background = element_rect(fill = "transparent"),
plot.background = element_rect(fill = "transparent"),
axis.text.x = element_text(face = "bold", size = 10),
axis.text.y = element_text(face = "bold", size = 10),
axis.ticks.y = element_blank())

最佳答案

如何使用ggplot2分机 ggrepel :
require(ggrepel)
更换您的 geom_text()符合:

geom_text_repel(aes(label = paste0(format(round(as.numeric(line_data), 1), nsmall = 0, big.mark = ","))),
size = 3, fontface = "bold", nudge_y=150)
nudge_y是什么使标签下线,您可以使用 nudge_x 的组合和 nudge_y为了更多的控制。并查看包装小插图: https://github.com/slowkow/ggrepel/blob/master/vignettes/ggrepel.md

enter image description here

关于r - 折线图上的程序标签以避免线条 ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46200293/

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