是否有可能在geom_segment
的末尾添加箭头,而不是使箭头指向{{的末尾 1}}在geom_segment
中?
一个例子:
ggplot2
的结尾(或:箭头指向geom_segment
); x = 1
的结尾开始并指向(或者:箭头从geom_segment
开始)。我到目前为止所做的:
生成上面图的代码是手动调整的,并且仅适用于给定的图大小:
x = 1
使用另一个绘图大小,代码会产生与我不想要的不同的东西:
因此,我正在ggplot() +
geom_segment(aes(x = 0, y = 1, xend = 1, yend = 1), arrow = arrow()) +
geom_segment(aes(x = 0, y = 0, xend = 1.05, yend = 0), arrow = arrow()) +
ylim(-1, 2)
内寻找一个选项(我没有找到有用的东西,因为arrow()
是默认值,并产生与上述相同的图。)或替代ends = "last"
。在geom_
内部。
有任何提示吗?
@mnm中的评论不不符合我的搜索要求
arrow()
答案 0 :(得分:1)
我不知道如何使用geom_segment本地执行此操作,但是您可以创建一个函数来帮助执行此操作。它修改结束坐标以扩展长度,达到arrow_length
项指定的长度。
geom_segment_extra <- function(x, y, xend, yend, arrow_length) {
angle = atan2(yend - y, xend - x) # Trig reminder from https://stackoverflow.com/a/34617867/6851825
xend = xend + arrow_length * cos(angle)
yend = yend + arrow_length * sin(angle)
list( # ggplot accepts list objects as new layers
geom_segment(aes(x = x, y = y, xend = xend, yend = yend), arrow = arrow())
)
}
然后我们可以使用它。请注意,第一个geom_segment_extra
只是重复正常的片段外观,而添加arrow_length = 0.1
则将其扩展0.1个单位:
ggplot() +
geom_segment(aes(x = 0, y = 1, xend = 1, yend = 1), arrow = arrow()) +
geom_segment_extra(0, 0.9, 1, 0.9, arrow_length = 0) +
geom_segment_extra(0, 0.8, 1, 0.8, arrow_length = 0.1) +
scale_x_continuous(breaks = 0.2*0:100)