Hi there, I just wonder how to draw this kind of picture... http://www.nabble.com/file/p24158796/b.jpg http://www.nabble.com/file/p24158796/a.jpg and this is what i have done %%%%% library(shape) library(diagram) curve(sin(x),bty="n",-8,8,yaxt="n",ylab="",xaxt="n",type="n",xlab="") axis(1,labels=F,at=seq(-8,8,1)) curvedarrow(from=c(-4,-1), to=c(4,-1),curve=-0.035,arr.pos=1,lwd=1) text(0,-0.62,substitute(mu(s,t))) axis(1,labels="s",at=-4) axis(1,labels="t",at=4) %%%%% is there any easier way or the most proper way to draw these to graphs? Thanks in advance! Chen -- View this message in context: http://www.nabble.com/curvedarrow-%28some-graphics-problem%29-tp24158796p24158796.html Sent from the R help mailing list archive at Nabble.com.
Hi,
Grid offers several functions to help drawing such graphs,
see Paul Murrell's "Can R Draw Graphs? " (useR! 2006)
I came up with this, as a quick example,
vp <- viewport(
x = unit(0, "npc"),
y = unit(0, "npc"),
just = c("left", "bottom"),
xscale = c(-1, 1) ,
yscale = c(-1, 1))
vp2 <- viewport( # probably not needed but I had trouble placing the xaxis
x = unit(0, "npc"),
y = unit(0.5, "npc"),
just = c("left", "bottom"),
xscale = c(-1, 1) ,
yscale = c(-1, 1))
pushViewport(vp)
grid.xaxis(at=seq(-1, 1, by=0.2), label=FALSE, vp=vp2)
grid.points(x=0.3, y=0.5, gp=gpar(col=NA), default.units = "npc",
name="h1", vp=vp)
grid.points(x=0.8, y=0.5, gp=gpar(col=NA), default.units = "npc",
name="h2", vp=vp)
grid.text("t", x=0.3, y=unit(-1, "line"), vp=vp2)
grid.text("s", 0.8, unit(-1, "line"),
gp=gpar(col="red"), vp=vp2)
grid.curve(grobX("h2", 180),
grobY("h2", 180),
grobX("h1", 180),
grobY("h1", 180),
shape=1, ncp=10,
square=FALSE,
curvature=1,
arrow=arrow())
upViewport()
HTH,
baptiste
casperyc wrote:> Hi there,
>
> I just wonder how to draw this kind of picture...
>
> http://www.nabble.com/file/p24158796/b.jpg
> http://www.nabble.com/file/p24158796/a.jpg
>
> and this is what i have done
>
> %%%%%
> library(shape)
> library(diagram)
>
curve(sin(x),bty="n",-8,8,yaxt="n",ylab="",xaxt="n",type="n",xlab="")
> axis(1,labels=F,at=seq(-8,8,1))
> curvedarrow(from=c(-4,-1), to=c(4,-1),curve=-0.035,arr.pos=1,lwd=1)
> text(0,-0.62,substitute(mu(s,t)))
> axis(1,labels="s",at=-4)
> axis(1,labels="t",at=4)
> %%%%%
>
> is there any easier way
> or
> the most proper way to draw these to graphs?
>
> Thanks in advance!
>
> Chen
>
Hi there,
This is now the code
%%%%%
library(grid)
vp <- viewport(
x = unit(0, "npc"),
y = unit(0, "npc"),
just = c("left", "bottom"),
xscale = c(-1, 1) ,
yscale = c(-1, 1))
vp2 <- viewport( # probably not needed but I had trouble placing the xaxis
x = unit(0, "npc"),
y = unit(0.5, "npc"),
just = c("left", "bottom"),
xscale = c(-1, 1) ,
yscale = c(-1, 1))
pushViewport(vp)
grid.xaxis(at=seq(-1, 1, by=0.2), label=FALSE, vp=vp2)
grid.points(x=0.3, y=0.5, gp=gpar(col=NA), default.units = "npc",
name="h1", vp=vp)
grid.points(x=0.7, y=0.5, gp=gpar(col=NA), default.units = "npc",
name="h2", vp=vp)
grid.text("s", x=0.3, y=unit(-1, "lines"), vp=vp2)
grid.text("t", 0.7, unit(-1, "lines"),
gp=gpar(col="red"), vp=vp2)
grid.text("mu(s,t)", 0.5, unit(5, "lines"), vp=vp2)
grid.curve(grobX("h2", 180),
grobY("h2", 180),
grobX("h1", 180),
grobY("h1", 180),
shape=1, ncp=10,
square=FALSE,
curvature=.4,
arrow=arrow(angle=20,ends="first") )
upViewport()
%%%%%
for this line:
grid.text("mu(s,t)", 0.5, unit(5, "lines"), vp=vp2)
how do I change "mu(s,t)" to the expression "mu"?
I have tried
grid.text(expression="mu(s,t)", 0.5, unit(5, "lines"),
vp=vp2)
grid.text(expression(mu(s,t)), 0.5, unit(5, "lines"), vp=vp2)
both didnt work
AND
when I tried to save the output as PDF file
it returns:
Error in function (name) : Grob 'h2' not found
I have no idea what to do?
--
View this message in context:
http://www.nabble.com/curvedarrow-%28some-graphics-problem%29-tp24158796p24196544.html
Sent from the R help mailing list archive at Nabble.com.