36

y 軸の制限を指定するとバーがレンダリングされない geom_bars に問題があります。以下が問題を再現するはずだと思います:

data <- structure(list(RoleCond = structure(c(1L, 1L, 2L, 2L), .Label = c("Buyer", "Seller"), class = "factor"), 
                   ArgCond = structure(c(1L, 2L, 1L, 2L), .Label = c("No Argument", "Argument"), class = "factor"), 
                   mean = c(2210.71428571429, 2142.70833333333, 2282.40740740741, 2346.2962962963), 
                   se = c(20.1231042081511, 16.7408757749718, 20.1471554637891, 15.708092540868)), 
                   .Names = c("RoleCond", "ArgCond", "mean", "se"), row.names = c(NA, -4L), class = "data.frame")

library(ggplot2)    
ggplot(data=data, aes(fill=RoleCond, y=mean, x=ArgCond)) + 
      geom_bar(position="dodge", stat="identity") + 
      geom_errorbar(limits, position=dodge, width=0.1, size=.75) + 
      scale_y_continuous(limits=c(2000,2500))

これは私にこれを与えます

バーなし

制限が指定されていない同じコードは正常に機能します。geom_errorbar() は問題に関連していないようですが、バーが表示される場所を示しています。

y軸を制限してバーを表示するために使用しようとしましcoord_cartesian(ylim=c(2000,2500))たが、軸ラベルがめちゃくちゃになり、何をしているのかわかりません。

ご提案ありがとうございます。(R 2.15.0 と ggplot2 0.9.0 を使用しています)

4

4 に答える 4

55

あなたは試すことができますlibrary(scales)

+ scale_y_continuous(limits=c(2000,2500),oob = rescale_none)

代わりに、ここで概説したように。

于 2012-04-28T16:03:43.213 に答える
12

誰かがこれに出くわした場合に備えて、わずかに異なる私のケースの回答を追加します。

を使用するposition="dodge"と、バーは水平方向に自動的にサイズ変更され、多くの場合、データ自体の制限をはるかに超えるスペースを埋めます。その結果、x-axisy-axis制限の両方が であってもlimits=c(min-1, max+1、特定のデータ セットについては、position="dodge"その制限範囲を超えてサイズが変更され、バーが表示されない場合があります。これは、上記の場合とは異なり、制限フロアが 0 の場合にも発生する可能性があります。

ANDoob=rescale_noneの両方で使用すると、 によって行われたサイズ変更が単純に切り捨てられ、この問題が修正されます。scale_y_continous()scale_x_continuous()position="dodge"

package:scales以前のコメントによると、最初に実行する必要がありますlibrary(scales)

これが、上記の答えが途中でしか得られない他の誰かに役立つことを願っています.

于 2015-07-15T17:23:36.307 に答える