2016-09-14 10 views
0

とパッケージで設計しています。 唯一の問題は、バーとx軸の間のスペースを取り除くことができないことです。 私は、この式は、問題解決する必要があることを知っている:棒グラフとx軸との間隔に影響を与えない連続的な位取りは、

scale_y_continuous(expand = c(0, 0)) function 

をしかし、エラーバーの要素は、それを上書きして、常にこのスペースを与えているようです。

ここに私のコード:あなたが抱えている問題を示している(と思う)というプロットを生成するためにいくつかの例のデータを使用して

p<-ggplot(data=tableaumergectrlmut, aes(x=ID, y=meanNSAFbait, fill=Condition)) + 
geom_bar(stat="identity", position=position_dodge())+ 
scale_y_continuous(expand = c(0,0))+ 
geom_errorbar(aes(ymin=meanNSAFbait-SDNSAFbait, 
    ymax=meanNSAFbait+SDNSAFbait, width=0.25), position=position_dodge(.9)) 
+0

あなたは、再現性の例を作るだろうか?おそらく、組み込みデータセットでこれを実証することができますが、そうでない場合は、データを 'dput()'またはシミュレーションによって共有する必要があります。 [再現可能な例を作るためのヒントについてはこちらをご覧ください](http://stackoverflow.com/q/5963269/903061)。 – Gregor

+0

また、例が* minimal *の場合はいいです - 実際の問題から逸脱するものを削除するのに役立ちます。カスタムカラー、ラベル、斜めのテキスト、テーマのカスタマイズなどが問題の一部でない場合は、質問から削除してください。 – Gregor

+0

expand = c(0,0)を使用すると、y軸の限界をデータセットの最大値と最小値に設定します。エラーバーがおそらく大きすぎてゼロ以下(奇妙だが可能)である場合、最小値はこの値(たとえば-1)であり、ゼロではありません。おそらく試して、limit = c(0,0)をscale_y_continuousに追加してください。 – Wave

答えて

0

library(ggplot2) 

df <- data.frame(val = c(10, 20, 100, 5), name = LETTERS[1:4]) 

ggplot(df, aes(x = name, y = val, fill = name)) + 
    geom_bar(stat = "identity") 

enter image description here

y軸(バーの下)上のゼロ点からのずれ及びここで、x軸ラベルがあるとされています。

enter image description here

注I:

ggplot(df, aes(x = name, y = val, fill = name)) + 
    geom_bar(stat = "identity") + 
    scale_y_discrete(expand = c(0,0)) + 
    scale_x_discrete(expand = c(0,0)) 

これは、プロットを与える:

あなたは、これは、scale_y_discreteまたはscale_y_continuousを使用してデータの性質に応じて、expandc(0,0)に設定削除することができますy軸に沿ってギャップを取り除いた場合は、このギャップを追加するためにscale_x_discrete行を削除するだけです。

エラーバーは、ここでは、問題があるので、いくつかの例は以下のとおりです。

ggplot(df, aes(x = name, y = val, fill = name)) + 
    geom_bar(stat = "identity") + 
    geom_errorbar(aes(ymin = val - 10, 
        ymax = val + 10)) 

enter image description here

あなたがダウンし、エラーバーへのパディングを削除するために、スケールを使用することができます。

ggplot(df, aes(x = name, y = val, fill = name)) + 
    geom_bar(stat = "identity") + 
    geom_errorbar(aes(ymin = val - 10, 
        ymax = val + 10)) + 
    scale_y_continuous(expand = c(0,0)) 

enter image description here

また、coord_cartesianを使用して厳しいカットオフを与えることもできます。

ggplot(df, aes(x = name, y = val, fill = name)) + 
    geom_bar(stat = "identity") + 
    geom_errorbar(aes(ymin = val - 10, 
        ymax = val + 10)) + 
    scale_y_continuous(expand = c(0,0)) + 
    coord_cartesian(ylim = c(0, max(df$val) + 10)) 

enter image description here

+0

はい、例として示すプロットをありがとうございます。この結果も得られますが、エラーバーを追加するとすぐに間隔が再び表示されます。 –

+0

エラーバーを追加しました。これはあなたが持っている問題を強調(解決)していますか? –

+0

はい、これは私の問題を完全に強調しています。私は最後にscale_y_continuous(expand = c(0,0))を追加しようとしましたが、最終的に期待どおりに動作します!どうもありがとうございました。 –

関連する問題