Plotting vectors in a coordinate system with R or python


Question

I am looking for advice on plotting vectors in the cartesian plane. The task is to plot points (coordinates) and then to link them with an arrow to some source point (say 0,0). The image below should give an idea. I don't care about colours and naming vectors/points, it's just about plotting arrows in the coordinate plane. I am sure some library exists in R (or python) for plotting linear algebra vectors and operations.

Any pointers would be appreciated!

vectors in a plane
(source: mathinsight.org)

1
11
8/20/2019 7:18:53 PM

Accepted Answer

Or you can use arrows function in R.

plot(c(0,1),c(0,1))
arrows(0,0,1,1)
14
6/4/2012 1:51:55 PM

plot(NA, xlim=c(0,5), ylim=c(0,5), xlab="X", ylab="Y")
vecs <- data.frame(vname=c("a","b","a+b", "transb"), 
                   x0=c(0,0,0,2),y0=c(0,0,0,1), x1=c(2,1,3,3) ,y1=c(1,2,3,3), 
                   col=1:4)
with( vecs, mapply("arrows", x0, y0, x1,y1,col=col) )

It will look a bit better if you add lwd=3 to the arrows call. The text function would allow labeling and can be rotated with the 'srt' parameter.

plot(NA, xlim=c(0,5), ylim=c(0,5), xlab="X", ylab="Y", lwd=3)
 with( vecs, mapply("arrows", x0, y0, x1,y1,col=col,lwd=3) )
 with(vecs, mapply('text', x=x1[1:3]-.1, y=y1[1:3]+.1, 
  labels=expression(list(a[1],a[2]), list(b[1],b[2]), list(a[1]+b[1],a[2]+b[2]) ) ))

enter image description here

PLease note that the list function inside the expression call is a plotmath list-call, different than the regular R list just as plotmath-paste is different than regular paste. It does not make any attempt to evaluate its argument in the parent-frame. For that one would need bquote or substitute and would probably need to use sapply be used to process the "interior" expressions.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon