[R] arrow egdes and lty
Martin Maechler
maechler at stat.math.ethz.ch
Mon Nov 14 12:00:17 CET 2011
>>>>> Ted Harding <ted.harding at wlandres.net>
>>>>> on Mon, 14 Nov 2011 10:39:35 +0000 writes:
> On 14-Nov-11 09:57:52, Matthias Gondan wrote:
>> Dear R developers,
>>
>> I want to draw an arrow in a figure with lty=2. The lty
>> argument also affects the edge of the arrow, which is
>> unfortunate. Feature or bug?
>>
>> Is there some way to draw an arrow with intact edge,
>> still with lty=2?
>>
>> Example code:
>>
>> plot(1:10) arrows(4, 5, 6, 7, lty=2)
>>
>> Best wishes, Matthias
> According to ?arrows, it would seem that there is no
> provision to draw the arrow shaft and the arrow head using
> different line types with a single call to arrows().
> To the extent that this represents the absence of a
> desirable feature (since you desire it), I would designate
> it as a bug.
> It can be done with two calls to arrows(), as follows:
> plot(1:10) arrows(4, 5, 6, 7, lty=2, length=0)
> arrows(5.99, 6.99, 6, 7, lty=1)
Another possibility is to use p.arrows() from package 'sfsmisc'
which draws "nice arrow heads";
and if you like to keep them simple, do *not* fill them :
install.packages("sfsmisc")
require("sfsmisc")
example(arrows) # - show R's standard arrows()
## The example from the p.arrows() help page:
plot(x,y, main="p.arrows(.)")
p.arrows(x[s], y[s], x[s+1], y[s+1], col= 1:3, fill = "dark blue")
## not filling the arrow heads -- and using lty :
plot(x,y, main="p.arrows(.)")
p.arrows(x[s], y[s], x[s+1], y[s+1], col= 1:3, lty = 2, fill = NA)
> Of course, the first could also be done using lines().
> Ted.
More information about the R-help
mailing list