改变箭头的箭头()

发布于 2024-11-02 15:23:06 字数 159 浏览 1 评论 0原文

我想知道是否可以更改用 arrows() 绘制的箭头的箭头。我查看了文档,但我发现我可以更改行尾但不能更改箭头?

plot(c(1:10))
arrows(0,0,10,10)

如有任何帮助,我们将不胜感激:)

i wonder if it is possible to change the arrowhead of an arrow drawn with arrows(). I looked through the documentation but all I found is that I can change the end of a line but not of an arrow?

plot(c(1:10))
arrows(0,0,10,10)

Any help is appreciated :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

十雾 2024-11-09 15:23:06

?arrow 中所述,您可以使用 lengthangle 来更改标准箭头的外观。使用lwd你可以改变粗细,就像lines()中一样。 lty 也可以工作,尽管结果通常不太好。

一整套例子:

plot(c(0:10),type="n")

arrows(1,0,2,1,length=0.2,angle=20)
arrows(1,1,2,2,length=0.1,angle=40,lwd=3)

invisible(mapply(arrows,
        rep(c(3,6),each=4),rep(3:6,2),
        rep(c(5,8),each=4),rep(5:8,2),
        angle=seq(10,40,length.out=8),
        length=rep(seq(0.1,0.3,length.out=4),2),
        lwd=rep(1:4,each=2))
)

as explained in ?arrow , you can use length and angle to change the appearance of standard arrows. With lwd you can change the thickness, exactly like in lines(). Also lty works, although the result is often not exactly nice.

A whole set of examples :

plot(c(0:10),type="n")

arrows(1,0,2,1,length=0.2,angle=20)
arrows(1,1,2,2,length=0.1,angle=40,lwd=3)

invisible(mapply(arrows,
        rep(c(3,6),each=4),rep(3:6,2),
        rep(c(5,8),each=4),rep(5:8,2),
        angle=seq(10,40,length.out=8),
        length=rep(seq(0.1,0.3,length.out=4),2),
        lwd=rep(1:4,each=2))
)
挖个坑埋了你 2024-11-09 15:23:06

Karline Soetaert 的包 shape 对于此目的很有用:

library(shape)
plot(c(0,2),c(-2,2), col=NA)
Arrows(c(0,1.7),c(1.3,-1.8),c(0.8,1.1),c(1.2,-1), lwd=2)

默认是一个填充的、弯曲的箭头,看起来很漂亮:

在此处输入图像描述

Gotta love CRAN!

Karline Soetaert's package shape is useful for this purpose:

library(shape)
plot(c(0,2),c(-2,2), col=NA)
Arrows(c(0,1.7),c(1.3,-1.8),c(0.8,1.1),c(1.2,-1), lwd=2)

The default is a filled, curved arrowhead that's pleasant to look at:

enter image description here

Gotta love CRAN!

﹂绝世的画 2024-11-09 15:23:06

如果其他答案无法让您使用 arrows 函数对箭头进行足够的控制,您可以使用 TeachingDemos 包中的函数 my.symbols 。这允许您创建自己的自定义箭头并绘制它们。

同一包中的函数 ms.arrows 显示了执行此操作的一种方法:您可以修改该函数(或其他 ms.* 函数)以创建任何类型的您想要的箭头,然后使用 my.symbols 来绘制它们。

编辑

这是一个请求的示例:

library(TeachingDemos)

ms.arrowhead <- function(angle, ...) {
  xy <- cbind( c(-1, -0.75, -1, 0), 
               c(-0.5, 0, 0.5, 0) )
  xy <- xy %*% matrix(c(cos(angle),-sin(angle),sin(angle),cos(angle)), 2)
  xspline(xy, shape=c(0, -1, 0, 0), open=FALSE, ...)
}

plot(1:10, 1:10)
my.symbols(1:10, 1:10, ms.arrows, angle=seq(pi, 0, length=10),
           col='blue', adj=1, length=0, symb.plots=TRUE)
my.symbols(1:10, 1:10, ms.arrowhead, angle= seq(pi, 0, length=10), 
           col='green', inches=0.5, lwd=2, symb.plots = TRUE)

它使用xspline 函数绘制一个以弧形背面作为箭头的三角形。可以修改这些点以获得不同形状的箭头,或者可以对形状使用其他方法。

If the other answers don't give you enough control of your arrows using the arrows function, you can use the function my.symbols, from TeachingDemos package. This allows you to create your own custom arrows and plot them.

The function ms.arrows, in the same package, shows one method of doing this: you can modify that function (or other ms.* functions) to create any type of arrow you want, and later use my.symbols to plot them.

Edit

Here is an example as requested:

library(TeachingDemos)

ms.arrowhead <- function(angle, ...) {
  xy <- cbind( c(-1, -0.75, -1, 0), 
               c(-0.5, 0, 0.5, 0) )
  xy <- xy %*% matrix(c(cos(angle),-sin(angle),sin(angle),cos(angle)), 2)
  xspline(xy, shape=c(0, -1, 0, 0), open=FALSE, ...)
}

plot(1:10, 1:10)
my.symbols(1:10, 1:10, ms.arrows, angle=seq(pi, 0, length=10),
           col='blue', adj=1, length=0, symb.plots=TRUE)
my.symbols(1:10, 1:10, ms.arrowhead, angle= seq(pi, 0, length=10), 
           col='green', inches=0.5, lwd=2, symb.plots = TRUE)

This uses the xspline function to draw a triangle with a curved back as the arrowhead. The points can be modified to get a different shaped arrowhead, or another method can be used for the shape.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文