使用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')
答案 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")
与你的不同之处:
我称之为x
。
我在情节上设置ylim
- 我不知道你的情节是如何在Y轴上从0开始的。
我使用第一个和第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轴选择的值构建多边形。