[r] 같은 그래프에서 ggplot2를 사용하여 두 변수를 선으로 표시



Answers

일반적인 접근법은 데이터를 긴 형식 (패키지 reshape 또는 reshape2 에서 melt() 사용) 또는 tidyr 패키지에서 gather() 로 변환하는 tidyr .

library("reshape2")
library("ggplot2")

test_data_long <- melt(test_data, id="date")  # convert to long format

ggplot(data=test_data_long,
       aes(x=date, y=value, colour=variable)) +
       geom_line()

Question

매우 새로운 질문입니다.하지만 다음과 같은 데이터가 있습니다.

test_data <-
  data.frame(
    var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
    var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
    date = seq(as.Date("2002-01-01"), by="1 month", length.out=100)
  )

var0 사용하여 x 축에 date 와 함께 같은 그래프에 var0var1 var0 두 시계열을 플로팅 할 수 있습니까? 보너스 포인트는 var0var1 서로 다른 색상으로 만들고 범례를 포함 할 수 있습니다!

나는 이것이 매우 간단하다고 확신하지만 거기서 어떤 예제도 찾을 수 없다.




데이터 사용 :

test_data <- data.frame(
var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
Dates = seq.Date(as.Date("2002-01-01"), by="1 month", length.out=100))

ggplot() 과 함께 사용하고자하는 스택 버전을 만듭니다.

stacked <- with(test_data,
                data.frame(value = c(var0, var1),
                           variable = factor(rep(c("Var0","Var1"),
                                                 each = NROW(test_data))),
                           Dates = rep(Dates, 2)))

이 경우 stacked 을 생성하는 작업은 몇 번의 조작만으로 간단했지만 reshape() 를 사용하면보다 복잡한 실제 데이터를 조작 할 수있는 경우 유용 할 수 있습니다.

일단 데이터가 쌓여진 형태라면, 모든 엑스트라를 사용하여 원하는 플롯을 생성하기 위해 간단한 ggplot() 호출 만 필요합니다 ggplot() latticeggplot2 와 같은 상위 레벨 플로팅 패키지가 유용한 이유 중 하나).

require(ggplot2)
p <- ggplot(stacked, aes(Dates, value, colour = variable))
p + geom_line()

축 레이블, 전설 제목 등을 정리하기 위해 당신에게 맡길 것입니다.

HTH




Related