我正在try 复制解决方案here,但将箭头更改为更粗.我对如何做到这一点有些困惑.

我一直在研究使用arrows函数,因为它能够实现lwd,但不知道如何将mapping获取到x0x1y0y1.是否有其他可以传递给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

R相关问答推荐

如何将具有重复名称的收件箱合并到R中的另一列中,而结果不同?

向gggplot 2中的数据和轴标签添加大写和星号

当两个图层映射到相同的美学时,隐藏一个图层的图例值

S用事件解决物质平衡问题

未识别时区

DEN扩展包中的RECT树形图出现异常行为

无法定义沿边轨迹的 colored颜色 渐变(与值无关)

将二进制数据库转换为频率表

合并后返回列表的数据帧列表

如何在科学记数法中显示因子

根据约束随机填充向量的元素

扩展R中包含列表的数据框

Geom_arcbar()中出错:找不到函数";geom_arcbar";

如何阻止围堵地理密度图?

构建一个6/49彩票模拟系统

如何更改包中函数中的参数?

将数据从一列转换为按组累计计数的单个虚拟变量

R:如何在数据集中使用Apply

如何在一种 colored颜色 中设置数值变量的 colored颜色 和高于阈值的 colored颜色 点?

汇总数据:在跨越()all_of()Dynamic_list_of_vars=>;所选内容不能有缺失值的汇总()中出错