在R中为网格箭头指定gpar设置

时间:2013-12-18 12:20:47

标签: r ggplot2

我正在开发一个比例大小的箭头图,并且有一个尺寸,方向和箭头尺寸的工作流程,但箭头有几个问题:1。它们有圆形线连接和2。即使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))

enter image description here

箭头基于grid graphics,但我无法弄清楚如何指定设置。 get.gpar()收益:

$lineend
[1] "round"

$linejoin
[1] "round"

gpar(linejoin = 'mitre', lineend = 'butt')不会改变这一点。有没有办法改变这些设置?提前谢谢。


修改

绘制图片,包括grid.segments箭头添加:

enter image description here

1 个答案:

答案 0 :(得分:4)

找到一个解决方案(指向@baptiste的指针)。如果您在github中使用geom_segment source code并进行以下更改,您将得到可爱的尖箭头:

1 require(proto)

2在GeomSegment的第一行(当前第51行)中添加ggplot:::,如下所示:

GeomSegment <- proto(ggplot:::Geom, {

3在linejoin = 'mitre'(第23行)中向gpar添加参数segmentsGrob

lwd=size * .pt, lty=linetype, lineend = lineend, linejoin = 'mitre'),

运行这两个功能,你最终会得到:

enter image description here