R多边形图未遮挡到X轴

时间:2013-10-08 10:39:25

标签: r plot polygon

使用R和多边形我试图遮蔽从线到x轴的图线下面的区域,我不知道我在这里做错了什么。

阴影使用y范围中间的某个点来遮挡x轴,而不是0。

数据集ratioresults是一个动物园对象,但我不认为这是问题,因为我尝试将y值强制转换为as.numeric和as.vector并得到相同的结果。

代码:

plot(index(ratioresults),ratioresults$ratio, type="o", col="red")
polygon(c(1,index(ratioresults),11),c(0, ratioresults$ratio, 0) , col='red')

enter image description here

2 个答案:

答案 0 :(得分:2)

index(ratioresults)是什么?对于一个简单的动物园对象,我看到:

> index(x)
[1] "2003-02-01" "2003-02-03" "2003-02-07" "2003-02-09" "2003-02-14"

Date个对象的向量。您正尝试将1和11的值前置/追加到此向量。它无法发挥作用。

这是一个可重复的例子:

x=zoo(matrix(runif(11),ncol=1),as.Date("2012-08-01") + 0:10)
colnames(x)="ratio"
plot(index(x),x$ratio,type="o",col="red",ylim=c(0,1))
polygon(index(x)[c(1,1:11,11)],c(0,x$ratio,0),col="red")

与你的不同之处:

  1. 我称之为x

  2. 我在情节上设置ylim - 我不知道你的情节是如何在Y轴上从0开始的。

  3. 我使用第一个和第11个(最后一个)点的x值完成多边形,而不是自己的1和11。

答案 1 :(得分:0)

#With an example dataset: please provide one when you need help!
ratioresults<-as.zoo(runif(10,0,1))
plot(index(ratioresults),ratioresults, type="o", col="red", 
     xaxs="i",yaxs="i", ylim=c(0,2))
polygon(c(index(ratioresults),rev(index(ratioresults))),
        c(as.vector(ratioresults),rep(0,length(ratioresults))),col="red")

您的问题的问题在于x轴不是默认情况下由给定y值定义的线,因此使用polygon将曲线填充到x轴下的一种方法是定义使用ylim(这里我选择0)的x轴的y值。无论您选择何种值,您都需要指定绘图使用yaxs="i"精确地停在该值处 您还必须使用为x轴选择的值构建多边形。