2012-04-04 9 views
9

ヒストグラムを生成していますが、特定の色で特定のグループを色付けしたいと思います。ここに私のヒストグラムである:ggplot2ヒストグラムの色を手動で塗る方法

enter image description here

私は14個のグループを持っていると私は最初の7の赤、次の4青、そして最終的に3オレンジ色に着色したいと思います。 ggplotでこれをどのようにすることができますか?ありがとう。

+0

私はあなたがバープロットではなく、ヒストグラムを意味すると仮定していますか?そこに(大きな)違いがあります。 – joran

+0

データは不連続なデータからの周波数のプロットです。 'geom_histogram'を使ってプロットしました。これが「棒グラフ」か「離散ヒストグラム」かどうかはわかりません。 – drbunsen

+2

私はおそらくgeom_barをその場合に使用します。そして、あなたはあなたが望むカラーグループを定義するグループ化変数をデータフレームに必要とし、それを 'fill'にマップします。 '?geom_bar'にはいくつかの例があります。 – joran

答えて

12

更新されたバージョンは

グループ化列を指定する必要はありません、ggplotコマンドは、よりコンパクトです。

library(ggplot2) 
set.seed(1234) 

# Data generating block 
df <- data.frame(x=sample(1:14, 1000, replace=T)) 
# Colors 
colors <- c(rep("red",7), rep("blue",4), rep("orange",3)) 

ggplot(df, aes(x=x)) + 
    geom_histogram(fill=colors) + 
    scale_x_discrete(limits=1:14) 

enter image description here

古いバージョン

library(ggplot2) 

# 
# Data generating block 
# 
df <- data.frame(x=sample(c(1:14), 1000, replace=TRUE)) 
df$group <- ifelse(df$x<=7, 1, ifelse(df$x<=11, 2, 3)) 

# 
# Plotting 
# 
ggplot(df, aes(x=x)) + 
    geom_histogram(data=subset(df,group==1), fill="red") + 
    geom_histogram(data=subset(df,group==2), fill="blue") + 
    geom_histogram(data=subset(df,group==3), fill="orange") + 
    scale_x_discrete(breaks=df$x, labels=df$x) 

enter image description here

+0

私は累積ヒストグラム 'aes(y = cumsum(.. count ../ sum(.. count ..)))'を扱う唯一の方法として '' geom_histogram(fill = colors) '' aes'の内部に塗りつぶしを設定すると、グループが積み重なる結果になったからです。より簡単な '' stat_ecdf''アプローチは '' breaks''オプションを取らないので私のためには機能しませんでした。結局のところ、このアプローチだけが有効でした。 – PatrickT

関連する問題