2013-11-14 20 views
10

レイアウト上の理由から、棒の真ん中がラベルの上になるように、ラベルの中央に配置したいと考えています。ヒストグラムの棒をラベルの中心に合わせる

library(ggplot2) 

df <- data.frame(x = c(0,0,1,2,2,2)) 

ggplot(df,aes(x)) + 
    geom_histogram(binwidth=1) + 
    scale_x_continuous(breaks=0:2) 

これは、これまでに見えるものである - バーの左側には、ラベルの上にある:

enter image description here

は、そのような方法で、与えられたスニペットを調整することは可能ですか?

答えて

19

(代わりにFXをgeom_barを使用せずに)これは、カテゴリx軸を必要としませんが、古いggplot2 1.

library(ggplot2) 

df <- data.frame(x = c(0,0,1,2,2,2)) 

ggplot(df,aes(x)) + 
geom_histogram(binwidth=1,boundary=-0.5) + 
scale_x_continuous(breaks=0:2) 

とは異なるビン幅を持っている場合は、あなたが少しをプレイしたいと思います( < 2.1.0)、geom_histogram(binwidth=1, origin=-0.5)を使用してください。

+0

を 'origin'あなたが 'ggplot2' 2.1以上を使用している場合はそれを使用する必要があります。 – niczky12

7

あなたのy値を計算し、xをカテゴリx軸として使用し、geom_bar(stat="identity")を使用します。すぐ下

library(ggplot2) 
library(data.table) 

df = data.table(x = c(0,0,1,2,2,2)) 

df = df[, .N, by=x] 

p = ggplot(df, aes(x=factor(x), y=N)) + 
    geom_bar(stat="identity", width=1.0) 

ggsave("barplot.png", p, width=8, height=4, dpi=120) 

enter image description here

+0

申し訳ありませんが、新しいパッケージを不必要に導入し、geom_barに頼らないようにリクエストを無視しました。調整するか、またはあなたの答えを削除してください。ありがとう – Raffael

5

コードが動作するように使用されていないが、もはや。これは、ビンが均等に分割することができると仮定からggplotを防止する(今geom_hiustogramキャッチを::このごまかしをggplot2と異なる機能を使用することを提案した:

ggplot(df,aes(factor(x))) + 
    geom_histogram(binwidth=1) 
#Error: StatBin requires a continuous x variable the x variable is discrete. Perhaps you want stat="count"? 

ので、代わりに使用:

ggplot(df,aes(factor(x))) + 
    stat_count() 
+0

この答えは何の説明もありませんが遅れていますか?)、それは最良のアイデアを持っています。 –

+0

Heh;今はggplot2バージョン2.1.0でエラーを投げます –

関連する問題