легенда команды в зоопарке - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь построить несколько временных рядов на одном графике.

Ниже приведен фрагмент файла:

Date        FP1M      FP3M    FP6M
2001-12-01  6.44      6.34    6.36
2002-01-01  5.70      6.00    5.99

Когда я использую plot () вместе с lines (), я получаю график, но не ось x (то есть время).

Ниже приведен код:

z <- read.table("C:\\Users\\lenovo\\Desktop\\IRPfinal.txt",header=TRUE,sep="")
d <- as.Date((z$Date),format="%m/%d/%Y")
a <- z[,"FP1M"]
b <- z[,"FP3M"]
c <- z[,"FP6M"]
plot(d,a,xaxt="n",type="l",xlab="Timeline",lwd=5,ylab="Percent",xaxt="n",
     main="Forward Premia on the US Dollar")
lines(d,b,type="l",col="red",lwd=5)
lines(d,c,type="l",col="blue",lwd=5)
legend(0,col=c("black","red","blue"),lwd=5,legend=c("FP1M","FP3M","FP6M"))
axis(1, d ,format(d, "%b  %y"), cex.axis = .4)

Появляется следующая ошибка:

Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf

Почему ось даты не отображается должным образом?

Я попробовал пакет zoo, который решает вышеуказанную проблему, но теперь я не могу добавить легенду к графику. Команда легенды не поддерживается zoo?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

С zoo и lattice:

dat <- "Date        FP1M      FP3M    FP6M
2001-12-01  6.44      6.34    6.36
2002-01-01  5.70      6.00    5.99"

z <- read.zoo(textConnection(dat), header=TRUE)
xyplot(z, superpose=TRUE, xlab="Timeline", ylab="Percent",
       main="Forward Premia on the US Dollar")
0 голосов
/ 07 октября 2011

Спасибо всем за помощь. Пробую свои предложения.Тем временем я смог добавить легенду при использовании пакета zoo с помощью аргумента locator (1) , поэтому проблема была в том, что я задавал неправильные координаты для источника поля легенды.

Кроме того, некоторая помощь с веб-страницы (ссылка ниже) позволила мне обойтись даже без зоопарка.Сначала нужно использовать as.Date (as.character ()) в первом столбце, чтобы прочитать записи этого столбца как даты. Затем весь набор данных должен быть проиндексирован первым столбцом с помощью команда order () . Затем ось начинает отображаться как время.

Извините, если все это кажется элементарным. Я новичок без какого-либо опыта программирования.

Вот ссылкаэто помогло:

http://blog.earlh.com/index.php/2009/07/plotting-multiple-series-in-r-part-4-in-a-series/

...