2012-05-10 22 views
0

積み重なった棒グラフをRにプロットすることに関する小さな疑問。 積み重なった棒グラフは、下から上へのシリーズを表します。 しかし、凡例には常にシリーズの上から下へが表示されます。あなたのいずれかを省略した場合(積み重ねられたバープロットは、凡例の反対の順序ですか?

exports <- data.frame(100*rbind('Americas'=runif(6),'Asia'=runif(6),'Other'=runif(6))) 
colnames(exports) <- 2004:2009 
series_we_want <- c(1,2,3) 
barplot(as.matrix(exports[series_we_want,]), col=mycolors, ...) 
legend(x="topleft", legend=rev(rownames(exports)[series_we_want]), col=rev(mycolors) ...) 

:私はのようなことがggplot2::geom_bar

でも真であるlegend()またはbarplot()のいずれかの内側に二回rev(...)を使用するよりも任意のよりよいイディオムがあると思いますrev()'s出力は明らかに無意味です。単一のフラグを追加するための機能強化のようです。yflip=TRUEまたはyreverse=TRUE

+1

あなたの例では、これがggplot2でので、多分再現可能ではありません。 '+ガイド(()= TRUEを逆転= guide_legendを記入)' –

+0

@Tyler:再現パーツが追加されました。私は主に、このようなオプションがない、基本的な 'graphics :: barplot' *について主に尋ねています。人々に意識させ、より良いイディオムがあるかどうかを確認する。 – smci

+1

トレリスにも同じ問題があります。私はDeepayanに回避策を尋ねたところ、as.table = TRUEを追加しました。これは、上空が良いというデカルトの強迫観念の結果であることに留意しました。 –

答えて

1

これは私があなたのコードを使用して得たものである:

exports <- data.frame(100*rbind('Americas'=runif(6),'Asia'=runif(6),'Other'=runif(6))) 
colnames(exports) <- 2004:2009 
series_we_want <- c(1,2,3) 
barplot(as.matrix(exports[series_we_want,])) 
legend(x="topleft", legend=rev(rownames(exports)[series_we_want])) 

enter image description here

これを試してみてください。

exports <- data.frame(100*rbind('Americas'=runif(6),'Asia'=runif(6),'Other'=runif(6))) 
colnames(exports) <- 2004:2009 
series_we_want <- c(1,2,3) 
test_data<-as.matrix(exports[series_we_want]) 

barplot(test_data, 
      legend.text=as.character(rev(rownames(exports)[series_we_want])), 
      args.legend = list(x="topleft")) 

はで伝説を作るように見えますあなたが持っているものの逆の順序

enter image description here

+0

私はOPがそれをすることができると思うが、 IMHOのダブルレヴェルは大したことではないし、「伝説」にはこれを行う議論がないように見えるので、これは簡単だと思われる。 –

+0

まあ、私はそれが好きではありませんが、それは動作します...-)私は、 'graphics :: barplot'があなたが望むものをほとんど行いますが、かなりカスタマイズすることはできないので、' ggplot'より良い。 – smci

関連する問題