2015-05-31 4 views
1

Я хотел бы построить две функции в графе.график 2 кривых; сплошные линии вместо пунктирных

r <- rnorm(20,0,1) 
z <- c(1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1) 
data <- as.data.frame(na.omit(cbind(z, r))) 
series1 <- ts(cumsum(c(1,data[,2]*data[,1]))) 
series2 <- ts(cumsum(c(1,data[,2]))) 

Сюжет серии 2 выглядит следующим образом. enter image description here

Объединение двух кривых на одном графике с

matplot(cbind(series1, series2), xaxt = "n", xlab = "Time", ylab = "Value", col = 1:3, ann = FALSE, type = 'l') 

дает следующее:

enter image description here

Кривая Series2 теперь пунктирная линия.

У меня есть два вопроса:

1) Как я могу изменить пунктирную линию в виде сплошной линии?

2) Заголовки для оси не показаны ни на одном из графиков. Как я могу это исправить?

Заранее спасибо.

ответ

1

ниже код должен дать вам желаемые результаты:

matplot(cbind(series1, series2), xaxt = "n", xlab = "Time", 
     ylab = "Value", col = 1:3, ann = TRUE, type = 'l', 
     lty = 1) 

lines

Ключевые параметры являются:

  • ann = TRUE
  • type = 'l'
+0

'lty = 1' также очень важно, чтобы иметь сплошную линию. Обратите внимание, что вы можете использовать 'lty =" solid "или' lty = "dotted" '. Наконец, я бы добавил 'las = 1', чтобы метки горизонтальной оси и' lwd = 2' имели несколько более толстые линии. – nico

1

В качестве альтернативы matplot можно использовать plot в сочетании с lines:

plot(series1, xlab="Time", ylab="Value", xaxt="n") 
lines(series2, col="red") 

это дает:

enter image description here


На стороне записки: всегда используйте set.seed() при использовании беспорядочно разрозненные значения. Вы можете сделать это вот так:

set.seed(1) 
r <- rnorm(20,0,1) 
z <- c(1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1) 
data <- as.data.frame(na.omit(cbind(z, r))) 
series1 <- ts(cumsum(c(1,data[,2]*data[,1]))) 
series2 <- ts(cumsum(c(1,data[,2]))) 

Это облегчает повторную копию данных для примера.

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