1

と で棒グラフを描きたいのですが、 の挙動に一貫性がないようggplotです。理由がわかりません。geom_bargeom_bar

私のデータは降水量の時系列です。

library(ggplot2)
library(data.table)
library(lubridate)
set.seed(42)
dt1 <- data.table(dateHeure=seq(ymd_hms("2014-06-04 13:30:00"), 
                ymd_hms("2014-10-20 08:30:00"), by='1 hour'),
     rain=sample(c(rep(5,15), rep(10,15), rep(20,10), 
             rep(30, 5), 40, rep(0, 3262)))) 

次に、それをプロットすると、すべてのデータが表示されるわけではありません...一部のデータが欠落しているのはなぜですか?

ggplot(data=dt1)+
geom_bar(aes(x=dateHeure, y=rain),        
      stat="identity", 
      fill="blue")  # doesn't work!

間違ったプロット

しかし、変数colorを に追加するaesと、プロットは正しいです!

 ggplot(data=dt1)+
geom_bar(aes(x=dateHeure, y=rain, color="rain"),     
 stat="identity",
 width=0.2)  # work properly

ok_plot

だから誰かがなぜgeom_barないと正しく動作しないのか知っていますcolorか? すべてのデータが正しくプロットされていない場合があると、頼りにならないので...

ありがとう!

編集: @eipi10 に応答するために、プロットを追加しました。奇妙なことに、最初のケースでプロット ウィンドウのサイズを変更すると、プロットされるデータが変更されます。

4

1 に答える 1

2

あなたの質問への編集に基づいて、私は何が起こっているのか知っていると思います.最初のプロットでは、fill="blue". ただし、ビンの幅は、x 軸の範囲全体に比べて非常に小さいです。これにより、非常に細い縦棒が表示されます。非常に薄いため、画面に表示されないものもありますが、プロットの物理的な幅を拡大すると表示されます。

一方、使用した 2 番目のプロットcolour="rain"では、各バーに境界線を追加して各バーを太くし、プロットの物理的な幅が比較的小さい場合でも表示できるようにします。

最初のプロットに追加colour="blue"(または「赤」など) してみてください。サイズを変更しなくても、すべてのバーが表示されると思います。一方、2 番目のプロットで に変更colour="rain"してみfill="rain"て、2 番目のプロットで「データが消える」効果が生じるかどうかを確認してください。

更新:コメントに応じて、 color パラメータを使用して線幅を設定し、必要なバーの太さを正確に取得できるため、実際には必要ありませんfill。例えば:

ggplot(data=dt1)+
  geom_bar(aes(x=dateHeure, y=rain),        
           stat="identity",
           colour="blue", lwd=0.5)

lwd(線幅) を、必要なバー幅を与える値に設定するだけです。もちろん、色を変えることもできます。

于 2015-03-13T15:33:33.357 に答える