我正在创建一个ggplot图表,我希望在两点之间有一些箭头.主要任务很容易完成geom_line(arrow = arrow()).但是,我想要一些"漂亮"的粗箭.调整箭头的大小size=没有用,因为它完全弄乱了箭头.我说明了我的问题:
创建一些示例数据和图:
NAME <- c("A", "A", "B", "B", "C", "C")
YEAR <- c(2016, 2011, 2016, 2011, 2016, 2011)
YEAR <- as.factor(YEAR)
VALUE <- c(1, 4, 1, 5, 2, 8)
DATA <- data.frame(NAME, YEAR, VALUE)
ggplot(DATA, aes(x=VALUE, y=NAME)) +
geom_point(size=5, aes(colour=YEAR)) +
geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed"))
Run Code Online (Sandbox Code Playgroud)
结果图看起来像这样:

现在我试图"加厚"箭头......
ggplot(DATA, aes(x=VALUE, y=NAME)) +
geom_point(size=5, aes(colour=YEAR)) +
geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed"), size = 3)
Run Code Online (Sandbox Code Playgroud)
这是这里显示的结果:

我的问题:有没有办法绘制一些"美丽的"粗箭?
我正在开发一个比例大小的箭头图,并且有一个尺寸,方向和箭头尺寸的工作流程,但箭头有几个问题:1.它们有圆形连线和2.它们不是' t关闭(见右下角)即使type='closed'.
require(ggplot2)
require(grid)
d = data.frame(x = 1:10, y = 0, size = 1:10)
ggplot(d, aes(x, y, size = size)) +
geom_segment(aes(xend = x, yend = y + size),
arrow = arrow(length = unit(d$size, "mm"), type='closed')) +
scale_size(range = c(2, 4))
Run Code Online (Sandbox Code Playgroud)

箭头基于网格图形,但我无法弄清楚如何指定设置. get.gpar()收益率:
$lineend
[1] "round"
$linejoin
[1] "round"
Run Code Online (Sandbox Code Playgroud)
但gpar(linejoin = 'mitre', lineend = 'butt')不会改变这一点.有没有办法改变这些设置?提前致谢.
编辑
绘制的图片包括grid.segments箭头添加:
