Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图在R中画两条线_R_Plot - Fatal编程技术网

试图在R中画两条线

试图在R中画两条线,r,plot,R,Plot,我试图在一个rgraph中画两条线,我假设这是一个调用同一代码两次的简单例子,但似乎只有我的第二个图形被画出来了。 (我的代码是为从postgres调用而设计的,我已经删除了sql代码) 下面的代码应该在canvas/tmp/junk上画两条线,但我似乎只得到一条红线,我希望看到红色和绿色 create or replace function doit() returns text as $$ printf <- function(...)print(sprintf(...)) png(

我试图在一个rgraph中画两条线,我假设这是一个调用同一代码两次的简单例子,但似乎只有我的第二个图形被画出来了。 (我的代码是为从postgres调用而设计的,我已经删除了sql代码)

下面的代码应该在canvas/tmp/junk上画两条线,但我似乎只得到一条红线,我希望看到红色和绿色

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