2013-09-17 2 views
1

Я объединил два объекта xts и хочу их нарисовать на одном дисплее. Это отлично работает, когда я использую точки (type = "p"). Однако, когда я использую строки (type = "l"), возникает проблема: первая серия показана только в области индекса, которая не покрывается второй серией. Я ожидал бы, что строки будут такими же точками, как «точки». Пример воспроизводимости приведен ниже.Построение объектов xts работает с точками, но не с линиями

Как это происходит с командами построения по умолчанию и ggplot, я подозреваю, что это относится к некоторому свойству данных временного ряда.

В чем причина такого поведения? Есть ли подходящий способ построения такого рода данных?

## Minimal example for Reproduction 
library(xts) 
library(ggplot) 
# create two artificial xts objects 
xts1 <- xts(1:15,Sys.Date()+10+seq(from=1,by=5,length.out=15)) 
xts2 <- xts(1:20,Sys.Date()+seq(from=1,by=2,length.out=20)) 

# merge them 
merged.xts <- merge.xts(xts1,xts2) 

# Plot as zoo objects to allow for panels 
# plotting with points shows both series 
plot(as.zoo(merged.xts),type="p",plot.type="single") 

Plotting with points

# plotting with lines 
# The second series is "shortened" 
plot(as.zoo(merged.xts),type="l",plot.type="single") 

Plotting with lines

# Similar behaviour with ggplot2 
autoplot(merged.xts) 
+0

Что произойдет, если вы преобразовать 'merged.xts' в простых векторов? –

+0

Спасибо за быстрый ответ! Однако я не вижу, как это должно помочь. В моем реальном наборе данных отметки времени не равномерно распределены, поэтому я полагаю, что зоопарк или xts - это то, что мне нужно. Но, может быть, я упустил здесь что-то принципиальное? – Tungurahua

ответ

2

Довольно просто, type="l" выглядит так, как это делает, потому что вы не можете построить линию на одной точке. Установить type="b" посмотреть b oth линий и точек.

points and lines and points and lines... it's like Morse Code!!!

+0

А, я вижу. Так что НС были введены при слиянии. Я бы подумал, что линии свяжут существующие точки «пропуская» значения NA. Таким образом, можно построить две серии в виде строк, только если они оба имеют значения в указательных точках. Благодарю. – Tungurahua

+0

@Tungurahua Я понимаю, как вы могли подумать об этом, но рисование линий _through_ недостающих значений можно было бы считать ошибочными. Если вы хотите заполнить «NA» для целей построения графиков, вы можете использовать 'na.locf',' na.approx', 'na.spline' и т. Д. –

+0

@Tungurahua И спасибо доброте' R' рассматривает NA путь оно делает. Подход Excel заставлял меня злиться годами. –

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