0

使用 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')

在此处输入图像描述

4

2 回答 2

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 本身。

于 2013-10-08T11:01:01.093 回答
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 值定义的线,因此在曲线下填充到 x 轴的一种方法是使用polygon定义 x 轴的 ay 值ylim(这里我选择了 0)。无论您选择什么值,您都需要指定绘图准确地停止在使用yaxs="i".
您还必须使用您为 x 轴选择的值来构建多边形。

于 2013-10-08T11:13:17.050 回答