2015-12-23 17 views
9

Benim tablosu aşağıdaki yapıyla data.combined edilir:R ggplot - Hata stat_bin sürekli x değişkeni gerektirir

'data.frame': 1309 obs. of 12 variables: 
$ Survived: Factor w/ 3 levels "0","1","None": 1 2 2 2 1 1 1 1 2 2 ... 
$ Pclass : Factor w/ 3 levels "1","2","3": 3 1 3 1 3 3 1 3 3 2 ... 
$ Name : Factor w/ 1307 levels "Abbing, Mr. Anthony",..: 109 191 358 277 16 559 520 629 417 581 ... 
$ Sex  : num 2 1 1 1 2 2 2 2 1 1 ... 
$ Age  : num 22 38 26 35 35 NA 54 2 27 14 ... 
$ SibSp : int 1 1 0 1 0 0 0 3 0 1 ... 
$ Parch : int 0 0 0 0 0 0 0 1 2 0 ... 
$ Ticket : Factor w/ 929 levels "110152","110413",..: 524 597 670 50 473 276 86 396 345 133 ... 
$ Fare : num 7.25 71.28 7.92 53.1 8.05 ... 
$ Cabin : Factor w/ 187 levels "","A10","A14",..: 1 83 1 57 1 1 131 1 1 1 ... 
$ Embarked: Factor w/ 4 levels "","C","Q","S": 4 2 4 4 4 3 4 4 4 2 ... 
$ Title : Factor w/ 4 levels "Master.","Miss.",..: 3 3 2 3 3 3 3 1 3 3 ... 

Ben Pclass göre kategorize Başlık ve atlattı arasındaki ilişkiyi yansıtmak için bir grafik çizmek istiyorum. Ben sayısal içine değişken Başlık değiştirirseniz Error: StatBin requires a continuous x variable the x variable is discrete. Perhaps you want stat="count"?

:

ggplot(data.combined[1:891,], aes(x=Title, fill = Survived)) + 
    geom_histogram(binwidth = 0.5) + 
    facet_wrap(~Pclass) + 
    ggtitle ("Pclass") + 
    xlab("Title") + 
    ylab("Total count") + 
    labs(fill = "Survived") 

Ancak bu hata ile sonuçlanır: Aşağıdaki kodu kullanılan data.combined$Title <- as.numeric(data.combined$Title) sonra kod eserler ancak grafikte etiket de (aşağıda) sayısal olduğunu. Lütfen bana neden olduğunu ve nasıl düzeltileceğini söyle. Teşekkürler.

BTW, Mac El Capital'da R 3.2.3 kullanıyorum.

Grafik: Yerine Mr, Miss, Mrs x ekseni sayısal değerler 1,2,3,4

enter image description here

+0

bir [ yeniden üretilebilir örnek] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) burada harika olurdu. –

+0

Ayrıca, sürümüm (1.0.1) hiçbir stat = "sayım" olmadığından ggplot ('' sessionInfo() ') sürümünüz de olabilir. Ve denediniz mi? Stat = "say" 'hata mesajında ​​olduğu gibi ('Başlık' bir faktör olarak tutmak)? –

+0

Teşekkürler mathematical.coffee, biraz daha fazla bilgiyi soruma güncelledim. Ggplot2_2.0.0 kullanıyorum, tamam mı? –

cevap

11

Toplamı kadar yukarıdaki yorumlardan cevabı gösterir:

1 - geom_bar() ile geom_histogram(binwidth=0.5)'u değiştirin. Ancak bu yol, bin genişliğinin özelleştirilmesine izin vermez.

2 - geom_bar() veya geom_histogram(binwidth = 0.5) yerine stat_count(width = 0.5) kullanmak bunu çözer.

kullanımı geom_bar Yukarıda belirtildiği gibi,
-1

() yerine geom_histogram arasında, örnek kod (I doğum tarihi veri her ay için ayrı bir grafik istediği) aşağıdaki vurun:

ggplot(data = pf,aes(x=dob_day))+ 
geom_bar()+ 
scale_x_discrete(breaks = 1:31)+ 
facet_wrap(~dob_month,ncol = 3) 
0

graph

extractTitle <- function(Name) {  
Name <- as.character(Name) 

    if (length(grep("Miss.", Name)) > 0) { 
    return ("Miss.") 
    } else if (length(grep("Master.", Name)) > 0) { 
    return ("Master.") 
    } else if (length(grep("Mrs.", Name)) > 0) { 
    return ("Mrs.") 
    } else if (length(grep("Mr.", Name)) > 0) { 
    return ("Mr.") 
} else { 
    return ("Other") 
    } 
} 

titles <- NULL 

for (i in 1:nrow(data.combined)){ 
    titles <- c(titles, extractTitle(data.combined[i, "Name"])) 
} 

data.combined$title <- as.factor(titles) 

ggplot(data.combined[1:892,], aes(x = title, fill = Survived))+ 
     geom_bar(width = 0.5) + 
     facet_wrap("Pclass")+ 
     xlab("Pclass")+ 
     ylab("total count")+ 
     labs(fill = "Survived")