2011-08-24 8 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は別に軸を設定できるようにすることで、「デュアルy軸」を実現。基本的なグラフィックスを使って何かに近づけることは可能かもしれませんが、もう少し考えてみてください。

EDIT

そして、ここでは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

関連する問題