2012-04-04 8 views
9

Bir histogram oluşturuyorum ve belirli grupları belirli renklerle boyamak istiyorum. İşte benim histogramdır:Bir ggplot2 histogramında renkleri el ile nasıl doldurabilirim?

enter image description here

ben 14 grupları var ve ben ilk 7 kırmızı, önümüzdeki 4 mavi ve son 3 turuncu renk istiyorum. Bunu ggplot'ta nasıl yapabilirim? Teşekkürler.

+0

Sana bir çubuk işaretler değil, bir histogram demek olduğunu varsayıyorum? Bir (büyük) fark var. – joran

+0

Veriler, süreksiz verilerden oluşan bir frekans grafiğidir. Geom_histogram'ı kullanarak çizdim. Bunun bir "çubuk grafik" mi yoksa "ayrı bir histogram" mı olduğundan emin değilim. – drbunsen

+2

Tamam. Muhtemelen bu durumda geom_bar kullanayım. Ve sonra, veri çerçevenizde istediğiniz renk gruplamasını tanımlayan bir gruplama değişkenine ihtiyacınız var ve ardından bunu 'doldurma' ile eşleştirin. 'Geom_bar'da bazı örnekler vardır. – joran

cevap

12

GÜNCELLEME VERSİYONU

gruplama sütunu belirtmek gerek yok, ggplot komut çok daha kompakt.

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

ESKİ

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

Ben geom_histogram (fill = colours) '' yaklaşımını buldum kümülatif histogramı işlemek için tek yol '' aes (y = cumsum (.. sayım ../sum (.. sayısı ..))) ' '' aes'' içinde bir dolgu koymak için grupların yığılmasıyla sonuçlandı. Daha basit olan 'stat_ecdf'' yaklaşımı benim için işe yaramadı çünkü' 'breakks'' seçeneği almıyor. Sonunda, sadece bu yaklaşım işe yaradı. – PatrickT

İlgili konular