我正在try 复制解决方案here,但将箭头更改为更粗.我对如何做到这一点有些困惑.
我一直在研究使用arrows
函数,因为它能够实现lwd
,但不知道如何将mapping
获取到x0
、x1
、y0
、y1
.是否有其他可以传递给layer
的参数可以更改箭头的线宽?
我正在try 复制解决方案here,但将箭头更改为更粗.我对如何做到这一点有些困惑.
我一直在研究使用arrows
函数,因为它能够实现lwd
,但不知道如何将mapping
获取到x0
、x1
、y0
、y1
.是否有其他可以传递给layer
的参数可以更改箭头的线宽?
我首先假设问题是来自包‘ggpmisc’的大约stat_valleys()
和stat_peaks()
,并且正在使用的geom是来自包‘ggplot2’的geom_segment()
,而不是来自包‘ggpp’的geom_text_s()
或geom_label_s()
或来自包‘ggrepel’的geom_label_repel()
或geom_text_repel()
.我将使用stat_peaks()
作为答案,因为stat_valleys()
的工作方式类似.
我为linewidth
美感使用了一个常量值,但也可以映射一个变量.可以将箭头提示添加到线段,最常用的是没有箭头提示的线段.
library(ggpmisc)
library(grid)
# lynx is a time.series object
lynx_num.df <-
try_tibble(lynx,
col.names = c("year", "lynx"),
as.numeric = TRUE) # years -> as numeric
ggplot(lynx_num.df, aes(year, lynx)) +
geom_line() +
stat_peaks(aes(yend = after_stat(y) + 500),
geom = "segment", colour = "red",
arrow = arrow(length = unit(0.03, "npc"), ends = "first" ),
linewidth = 1)
创建于2024-03-01年第reprex v2.1.0页
也可以使用geom_text_s()
.在stat_peaks()
和stat_valleys()
的文档中有使用geom_text_s()
的示例.在这些示例中,创建箭头的位移是通过轻推获得的.通过使标签文本透明,可以很容易地修改这些示例,这是一件繁琐的事情,但在大多数情况下也是有效的.
ggplot(lynx_num.df, aes(year, lynx)) +
geom_line() +
stat_peaks(colour = "red",
alpha = 0, alpha.target = "text",
geom = "text_s",
position = position_nudge_keep(x = 0, y = 400),
arrow = arrow(length = grid::unit(1.5, "mm")),
segment.linewidth = 0.75) +
expand_limits(y = 7400)
创建于2024-03-01年第reprex v2.1.0页