2011-08-24 5 views
3

필자는이 코드를 통해 여러 좌표를 그릴 수있게되었습니다 (커뮤니티에서 나쁜 개념이지만 다른 측정 항목을 비교할 필요가 있음을 알고 있습니다).피하는 피겨 차트를 얻고 싶습니까?

enter image description here

내가 무엇을 찾고 다음

twoord.plot(2:10,seq(3,7,by=0.5)+rnorm(9), 
    1:15,rev(60:74)+rnorm(15),xlab="Sequence", 
    ylab="Ascending values",rylab="Descending values", 
    main="Plot with two ordinates - bars on the left", 
    type=c("bar","l"),lcol=3,rcol=4) 

플롯 :이 ggplot2에 본질적으로 수행 할 수 없기 때문에 내가 무엇을해야 다음 코드를 적용 할 수 있는지, 궁금 해서요 여러 개의 막대를 좌우로 플롯하는 것입니다. 나는 type=c("bar", "bar")와 함께 type=c("bar", "l")를 바꾸려고 노력했다. 그러나 그것은 나에게 겹치는 바를 줬다.

내가 원하는
Category SubCat Value 
A   Cat1 0.1 
B   Cat1 0.2 
A   Cat2 0.3 
B   Cat2 0.24 
A   Cat3 13 
B   Cat3 41 
A   Cat4 60 
B   Cat4 146 

(A는 B) (CAT1, CAT2) 아래 왼쪽에있는 규모를 가지고 있고,하기 (A, B)에서 (Cat3 특징, CAT4 : 나는 플롯 할 정확한 데이터는 다음과 같다) 오른쪽에 눈금이 있고 A와 B에있는 모든 막대가 각각 함께 그룹화됩니다. 누군가 이걸 어떻게 할 수 있는지 말해 줄 수 있습니까?

답변

4

다음은 ggplot2를 사용하여 얻을거야 가깝게 아마도 다음과 같습니다

d <- read.table(textConnection("Category SubCat Value 
A   Cat1 0.1 
B   Cat1 0.2 
A   Cat2 0.3 
B   Cat2 0.24 
A   Cat3 13 
B   Cat3 41 
A   Cat4 60 
B   Cat4 146"),header = TRUE, sep="") 

d$grp <- rep(c('Cat1 - Cat2','Cat3 - Cat4'), each = 4) 
ggplot(d,aes(x = Category, y = Value)) + 
    facet_wrap(~grp, scales = "free_y") + 
    geom_bar(aes(fill = SubCat), position = "dodge") 

enter image description here

이 별도로 축을 설정 ggplot2을 패 시팅 (faceting)과 허용하여 "이중 Y 축"달성 . 기본 그래픽을 사용하여 원하는 것에 더 가깝게 할 수 있다고 확신하지만 좀 더 생각할 것입니다.

편집

그리고 여기가 twoord.plot를 사용하여 해킹입니다. 손보는 꽤 걸렸지 만 그 기능을 사용한 적이, 그래서 더 쉬운 방법이있을 수있다 :

par(xaxt = "n") 
twoord.plot(ly = d$Value[1:4],ry = d$Value[5:8], rx = c(9,11,13,15), lx = c(1,3,5,7), 
      type = c('bar','bar'), 
      xlim = c(0,16), 
      lylim = c(0,0.35),rylim = c(12,150)) 
par(xaxt="s")   
axis(1, at = c(1,3,5,7,9,11,13,15), 
     labels = paste(d$Category,d$SubCat,sep=""), 
     las = 3) 

enter image description here

관련 문제