试图在R中画两条线
我试图在一个rgraph中画两条线,我假设这是一个调用同一代码两次的简单例子,但似乎只有我的第二个图形被画出来了。 (我的代码是为从postgres调用而设计的,我已经删除了sql代码) 下面的代码应该在canvas/tmp/junk上画两条线,但我似乎只得到一条红线,我希望看到红色和绿色试图在R中画两条线,r,plot,R,Plot,我试图在一个rgraph中画两条线,我假设这是一个调用同一代码两次的简单例子,但似乎只有我的第二个图形被画出来了。 (我的代码是为从postgres调用而设计的,我已经删除了sql代码) 下面的代码应该在canvas/tmp/junk上画两条线,但我似乎只得到一条红线,我希望看到红色和绿色 create or replace function doit() returns text as $$ printf <- function(...)print(sprintf(...)) png(
create or replace function doit() returns text as
$$
printf <- function(...)print(sprintf(...))
png('/tmp/junk.png',width=800,height=500)
x=seq(0,40)
x2=seq(0,80,by=2)
y=seq(0,40)
opar <-par(bg="white")
par(new=T)
yrange=range(y)
plot(x=x,y=y);
lines(x=x,y=y,col="green",lty="solid")
points(x=x,y=y,bg="limegreen",pch=23)
par(new=F)
plot(x=x2,y=y);
points(x=x2,y=y,bg="red",pch=23)
lines(x=x2,y=y,col="red",lty="solid")
points(x=x2,y=y,bg="red",pch=23)
title(main='Example one')
dev.off()
print ("done")
$$ LANGUAGE 'plr';
create或replace函数doit()返回文本作为
$$
printf也许有点矛盾,你想要
par(new=T)
在现有绘图上绘图。如?par
帮助页所述:
如果设置为TRUE,则下一个高级打印命令(实际上
绘图(新)不应在绘图前清洁框架,就像它是
在新设备上
但是,如果您第二次使用plot()
,就可以了。如果您取出第二个绘图
以及par(new)
,只需在行
和点
调用中离开,就可以轻松绘制顶部
唯一需要注意的是,第一个绘图的限制在绘制后不会改变,因此如果y2
超出y1
的范围,则可能无法正确绘制。因此,您可以在plot命令中显式设置ylim=range(y1,y2)
所以,把这些放在一起我就可以了
png('/tmp/junk.png',width=800,height=500)
x=seq(0,40)
x2=seq(0,80,by=2)
y=seq(0,40)
y2=seq(0,80,by=2) * .2
opar <-par(bg="white")
plot(0,0, type="n", xlim=range(x,x2), ylim=range(y,y2));
lines(x=x,y=y,col="green",lty="solid")
points(x=x,y=y,bg="limegreen",pch=23)
lines(x=x2,y=y2,col="red",lty="solid")
points(x=x2,y=y2,bg="red",pch=23)
title(main='Example one')
dev.off()
png('/tmp/junk.png',宽度=800,高度=500)
x=序号(0,40)
x2=序列(0,80,由=2)
y=序号(0,40)
y2=序列(0,80,by=2)*.2
opar也许有点矛盾,你想要
par(new=T)
在现有绘图上绘图。如?par
帮助页所述:
如果设置为TRUE,则下一个高级打印命令(实际上
绘图(新)不应在绘图前清洁框架,就像它是
在新设备上
但是,如果您第二次使用plot()
,就可以了。如果您取出第二个绘图
以及par(new)
,只需在行
和点
调用中离开,就可以轻松绘制顶部
唯一需要注意的是,第一个绘图的限制在绘制后不会改变,因此如果y2
超出y1
的范围,则可能无法正确绘制。因此,您可以在plot命令中显式设置ylim=range(y1,y2)
所以,把这些放在一起我就可以了
png('/tmp/junk.png',width=800,height=500)
x=seq(0,40)
x2=seq(0,80,by=2)
y=seq(0,40)
y2=seq(0,80,by=2) * .2
opar <-par(bg="white")
plot(0,0, type="n", xlim=range(x,x2), ylim=range(y,y2));
lines(x=x,y=y,col="green",lty="solid")
points(x=x,y=y,bg="limegreen",pch=23)
lines(x=x2,y=y2,col="red",lty="solid")
points(x=x2,y=y2,bg="red",pch=23)
title(main='Example one')
dev.off()
png('/tmp/junk.png',宽度=800,高度=500)
x=序号(0,40)
x2=序列(0,80,由=2)
y=序号(0,40)
y2=序列(0,80,by=2)*.2
奥帕尔谢谢你!下次我会再次感谢你!下次我会一次又一次的RTFM