2013-10-08 3 views
0

Использование R и многоугольника Я пытаюсь затенять область под линией графика от линии до оси x, и я не уверен, что я здесь делаю неправильно.R Многоугольник Не затенение до оси X

Затенение использует некоторую точку в середине диапазона y для оттенка, а не 0, по оси x.

Корреспонденты набора данных являются объектом зоопарка, но я не думаю, что это проблема, так как я попытался привести значения 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

+1

Поставьте свои данные или что-нибудь, что имеет проблемы. Скорее всего, это потому, что топоры - это не то, что вы думаете. – Spacedman

ответ

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 на участок - я не знаю, как ваш участок смог начать с 0 по оси Y.

  3. Я завершаю многоугольник, используя значения х первой и 11-й (последней) точки, а не 1 и 11.

+0

Спасибо за такой подробный ответ. Работал как прелесть, и теперь я понимаю проблему. –

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") 

Проблема с вопросом является то, что ось х не линия определяется заданным значением у по умолчанию, так что один из способов, чтобы заполнить под кривой к оси х, используя polygon бы чтобы определить значения ay для оси x, используя ylim (здесь я выбрал 0). Независимо от того, какое значение вы выберете, вы захотите указать, что график точно остановится на значении с использованием yaxs="i".
Вы также должны построить свой многоугольник со значением, которое вы выбрали для оси x.

Смежные вопросы