Вы, вероятно, испытываете тот факт, что факторы и сроки представлены способами, которые могут быть незаметны для пользователя. Часто случается, что функции построения графиков неявным образом выполняют as.numeric (), а построение графиков, по-видимому, не выполняется, поскольку точки находятся за пределами области построения. Более конкретный ответ невозможен, учитывая отсутствие подробностей относительно объекта «набор данных» в вашем вопросе. Если это объект zoo / xts, тогда «даты» могут быть в компоненте индекса объекта.

инаю немного анализировать пары акций (торговля парами), и вот функция, которую я написал для создания графика (pair.report - указан ниже).

Мне нужно построить три разные линии в одном сюжете. Функция, которую я перечислил, делает то, что я хочу, но она потребует немного работы, если я хочу точную настройку по оси X (временная шкала). Как таковой, он печатает только годы (для данных за 10 лет) или месяцы (для данных за 6 месяцев) по оси x без форматирования для тиков.

Если я использую объект XTS, то есть, если я использую

plot(xts-object-with-date-asset1-asset2, ...)

вместо

plot(date, asset2, ...)

Я сразу получаю хорошо отформатированную ось X (вместе с сеткой и прямоугольником), но последующие добавления к графику с использованием таких функций, как points (), text (), lines (), завершаются неудачно. Я предполагаю, что points.xts () и text.xts () скоро не появятся.

Мне бы хотелось удобство объектов XTS, но мне также потребуется точный контроль над моим графиком. Так каким должен быть мой рабочий процесс? Нужно ли придерживаться базовой графики и выполнять все настройки вручную? Или я могу сделать так, чтобы xts работал на меня?

Я знаю о решетке и ggplot2, но я не хочу использовать их сейчас. Вот функция, которую я упомянул (любая критика / предложения по улучшению кода приветствуются) -

library(xts)

pairs.report <- function(asset1, asset2, dataset) {

#create data structures
attach(dataset)
datasetlm <- lm(formula = asset1 ~ asset2 + 0, data = dataset)
beta = coef(datasetlm)[1]

#add extra space to right margin of plot within frame
par(mar=c(5, 4, 4, 4) + 0.1)

# Plot first set of data and draw its axis
ylim <- c(min(asset2,asset1), max(asset2,asset1))
plot(date, 
     asset2,  
     axes=T, 
     ylim=ylim, 
     xlab="Timeline", 
     ylab="asset2 and asset1 equity", 
     type="l", 
     col="red", 
     main="Comparison between asset2 and asset1")
lines(date, asset1, col="green")
box()
grid(lwd=3)

# Allow a second plot on the same graph
par(new=T)

# Plot the second plot and 
ylim <- c(min(asset1-beta*asset2), max(asset1-beta*asset2))
plot(date, 
     asset1-beta*asset2, 
     xlab="", ylab="", 
     ylim=ylim, 
     axes=F, 
     type="l", 
     col="blue")

#put axis scale on right
axis(side=4, 
     ylim=ylim, 
     col="blue",
     col.axis="blue")
mtext("Residual Spread",side=4,col="blue",line=2.5)

abline(h=mean(asset1-beta*asset2))
}

Ответы на вопрос(1)

Ваш ответ на вопрос