문제

동일한 1 차 축과 관련이 있지만 2 차 축이 다른 두 개의 데이터 포인트 세트가 있습니다. ggplot2를 사용하여 r에서 서로를 플로팅 할 수있는 방법이 있습니까?

내가 찾고있는 것은 기본적으로 다음과 같이 보이는 것입니다.

4+           |
 | x       . + 220
3+     . .   |
 |   x       |
2+   .       + 210
 |     x     |
1+ .     x x |
 |           + 200
0+-+-+-+-+-+-+
     time   

   . temperatur
   x car sale

(이것은 가능한 데이터의 예일뿐입니다)

도움이 되었습니까?

해결책

나는 이것에 대한 전문가가 아니지만 이것이 격자에서는 가능하지만 GGPlot2에서는 가능하다는 것을 이해합니다. 이 Leanr 블로그 게시물을 참조하십시오 2 차 축 플롯의 예. 또한이 질문에 대한 Hadley의 응답도 참조하십시오.

다음은 격자에서 그것을하는 방법의 예입니다 ( Gabor Grothendieck):

library(lattice)
library(grid)  # needed for grid.text

# data

Lines.raw <- "Date  Fo  Co
6/27/2007  57.1  13.9
6/28/2007  57.7  14.3
6/29/2007  57.8  14.3
6/30/2007  57  13.9
7/1/2007  57.1  13.9
7/2/2007  57.2  14.0
7/3/2007  57.3  14.1
7/4/2007  57.6  14.2
7/5/2007  58  14.4
7/6/2007  58.1  14.5
7/7/2007  58.2  14.6
7/8/2007  58.4  14.7
7/9/2007    58.7 14.8
"

# in reality next stmt would be DF <- read.table("myfile.dat", header = TRUE)
DF <- read.table(textConnection(Lines.raw), header = TRUE)
DF$Date <- as.Date(DF$Date, "%m/%d/%Y")

par.settings <- list(
        layout.widths = list(left.padding = 10, right.padding = 10),
        layout.heights = list(bottom.padding = 10, top.padding = 10)
)

xyplot(Co ~ Date, DF, default.scales = list(y = list(relation = "free")),
        ylab = "C", par.settings = par.settings)

trellis.focus("panel", 1, 1, clip.off = TRUE)
  pr <- pretty(DF$Fo)
  at <- 5/9 * (pr - 32)
  panel.axis("right", at = at, lab = pr, outside = TRUE)
  grid.text("F", x = 1.1, rot = 90) # right y axis label
trellis.unfocus()

다른 팁

Shane의 대답은 "Ggplot2에서는 할 수 없습니다"라는 대답은 불완전한 경우 정확합니다. 아마도, 그것은 당신이 아닙니다 원하다 할 것. Y 축 스케일링 방법을 어떻게 결정합니까? 선의 수단이 동일하기를 원하십니까? 범위? 원칙적인 방법은 없으며 결과를 원하는 것처럼 보이게하기에는 너무 쉽습니다. 대신, 특히 그런 시계열에서 원하는 것은 두 개의 데이터 라인을 규범으로하여 특정 값에서 종종 최소 (t), y1 = y2 = 100을 갖도록하는 것입니다. 여기에 예가 있습니다. 나는 Bonddad 블로그 (GGPLOT2를 사용하지 않기 때문에 추악한 이유입니다!) 그러나 완전히 다른 기본 척도를 가진 두 줄의 상대적 증가와 감소를 깨끗하게 알 수 있습니다.

alt text

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top