1

積み上げ棒グラフを使用して、2 つのグループ間で同じドメインを測定する値が、積み上げられた負の棒グラフと同様に反対方向に移動するように、2 セットの値を表示しようとしています。これを行うために、積み上げ棒グラフを「ハイジャック」して、1 つのグループの値を負に設定しました。これにより、必要なイメージが得られます。ただし、積み上げ棒グラフの一番下のセットからネガを削除したいと考えています。これを行う方法はありますか?また、バー ジオムの width= オプションでバーの幅が調整されないのはなぜでしょうか? たとえば、geom_bar 仕様のオプションとして width=0.5 を追加すると、エラーが発生します。

Warning message: Stacking not well defined when ymin != 0

とにかく、あなたが提供できる助けを前もって感謝します。私のコード例は次のとおりです。

test <- structure(list(Mode = structure(c(2L, 1L, 3L, 2L, 1L, 3L), .Label = c("Air","Land", "Sea"), class = "factor"), Side = structure(c(2L, 2L,2L, 1L, 1L, 1L), .Label = c("Allies", "Axis"), class = "factor"),Value = c(72L, 12L, 16L, -84L, -12L, -22L)), .Names = c("Mode", "Side", "Value"), class = "data.frame", row.names = c(NA, -6L))

p <- ggplot(test, aes(x= Mode, y=Value, fill= Mode)) + geom_bar(color = "black", stat="identity", data=subset(test, Side == "Axis")) + geom_bar(color = "black", stat="identity", data=subset(test, Side == "Allies")) + scale_fill_brewer(type = "seq", palette = 1)+ guides(fill=FALSE) + scale_y_continuous(breaks=seq(-100, 100,10))

4

1 に答える 1

2

の幅の問題は解決したと思ってgeom_barいましたが、なぜか 0.9.2.1 でもまだ発生しています。その前に何かが欠けているかもしれませんが、幅を内側に設定するという古い修正はaes()まだ機能しています。

また、0 未満の y 軸ラベルが負の数にならないようにしたいという意味だったと思いますが、あなたの質問はそれについて完全に明確ではありませんでした。私が正しければ、これはおそらくあなたが求めているものです:

abs_format <- function(){
    function(x){
        abs(x)
    }
}

p <- ggplot(test, aes(x= Mode, y=Value, fill= Mode,width = 0.1)) + 
        geom_bar(color = "black", stat="identity", data=subset(test, Side == "Axis")) +
        geom_bar(color = "black", stat="identity", data=subset(test, Side == "Allies")) +
        scale_fill_brewer(type = "seq", palette = 1) + 
        guides(fill=FALSE) + 
        scale_y_continuous(breaks=seq(-100, 100,10),labels = abs_format())

ここに画像の説明を入力

また、スタッキングが適切に定義されていないというメッセージはエラーではないことを付け加えておきます。これは単なる警告であり、用心する必要があることを意味します。ggplot は、負の値を使用する場合、スタックする方法を理解するのが難しい場合があります。物事は通常うまくいきます。これは、ドラゴンに注意するように警告しているだけです。

于 2012-12-06T06:07:35.973 に答える