2016-06-23 22 views
-2

ggplotのバープロットを使ってx軸の制限を設定したいと思います。全体のプロットは大丈夫ですが、私がylim(1,6)を使うとき(これは私が必要とするものです)、バーが消えます。x軸の制限を変更する方法ggplot2 r

データ:

var.A <- as.numeric(c(1:13)) 
var.B <- c(4.351833, 2.938000, 4.726465, 3.747162, 3.720737, 4.297117, 4.304500, 4.061277, 4.595236, 4.105444, 3.701684, 3.523563, 4.170000) 
df <- data.frame(var.A,var.B) 

Ggplotコード:

ggplot(df, aes(x=factor(var.A), y=var.B)) + 
    geom_bar(position=position_dodge(), stat="identity", fill="#fff68f", colour="darkgrey", width = 0.4) + 
    coord_flip()+ 
    xlab("") + 
    ylab("") + 
    scale_x_discrete(labels=c("aaaaaaa aaaaa","bbbbb bbb bbbb","cccc ccc","dddd dd ddddd", 
          "eee e eeeee e ee","ffffffff","gggggggg","hhhhhhh","iiii", 
          "jjjjjj","kkkkkkk","llllll","mmmmmmmm")) 

そして、私が追加したとき:ylim(1,6) +物事がうまく行っています。

もう1つ。各バーの色はfill="#fff68f"と設定されています。 1つのバーの色を変更する解決策はありますか?たとえば、上から最初に異なるものを使用したいと考えています。すなわち、です。

+0

です。私はcoord_flip()を見逃しました+今は大丈夫です、 –

+1

'coord_flip(ylim = c(1,6))'を使ってみてください。制限を設定する2つの方法の違いを説明する 'coord_cartesian'の助けを見てください。あなたがやったやり方では、限界を超えたすべての観測値は「NA」に設定され、すべてのバーが0から始まるので、それはすべてです。 –

答えて

1

coord_flip()を使用したため、x軸の制限をscale_y_continuous(expand=c(0,0),limits=c(1,6),oob = rescale_none)に設定し、すべてのバーの色を設定するにはscale_fill_manual(values = c("#ee2c2c",...)を使用できます。

ですから、手動でバーの色を設定したい場合は、最初の名前のベクトルを作成する必要がありますし、あなたのデータフレームに挿入:

names <- c("aaaaaaa aaaaa","bbbbb bbb bbbb","cccc ccc","dddd dd ddddd", 
"eee e eeeee e ee","ffffffff","gggggggg","hhhhhhh","iiii", 
"jjjjjj","kkkkkkk","llllll","mmmmmmmm") 

var.A <- as.numeric(c(1:13)) 
var.B <- c(4.351833, 2.938000, 4.726465, 3.747162, 3.720737, 4.297117, 4.304500, 4.061277, 4.595236, 4.105444, 3.701684, 3.523563, 4.170000) 
df <- data.frame(var.A,var.B,names) 

そして、あなたが必要とするggplotに変数名と色を注文しますキャラクタからファクタにベクトルの構造を変更する(レベルを得るために)。

var.names = factor(df$names, 
       levels = c("aaaaaaa aaaaa","bbbbb bbb bbbb","cccc ccc","dddd dd ddddd", "eee e eeeee e ee","ffffffff","gggggggg","hhhhhhh","iiii", "jjjjjj","kkkkkkk","llllll","mmmmmmmm"), ordered=T) 

だからあなたのコードは次のようになります。

ggplot(df, aes(x=var.names, y=var.B, fill=as.factor(var.names))) + 
    geom_bar(position=position_dodge(), stat="identity", width = 0.4) + 
    coord_flip()+ 
    scale_y_continuous(expand=c(0,0),limits=c(1,6),oob = rescale_none) + 
    xlab("") + 
    ylab("") + 
    scale_fill_manual(values = c(c(rep("#fff68f",12)),"#ee2c2c")) 

そして、出力は私が間違ってggplotコードを入れなかった

enter image description here

関連する問題