2017-06-07 2 views
0

Ich frage mich, was ist falsch an meinem Code?
Mein Code ist wie:Wie AOV Post-hoc-Test zu Ggplot2 Boxplot hinzufügen? Ich kann die Beschriftungen in meinem Diagramm nicht darstellen

a=aov(tem.range~Butterfly.colonies, data=my.data) 
summary(a) 
tHSD <- TukeyHSD(a, ordered = FALSE, conf.level = 0.95) 
tHSD 
generate_label_df <- function(HSD, flev){ 
    # Extract labels and factor levels from Tukey post-hoc 
    Tukey.levels <- HSD[[flev]][,4] 
    Tukey.labels <- multcompLetters(Tukey.levels)['Letters'] 
    plot.labels <- names(Tukey.labels[['Letters']]) 
    boxplot.df <- ddply(my.data, flev, function (x) max(fivenum(x$y)) + 0.2) 

    plot.levels <- data.frame(plot.labels, labels = Tukey.labels[['Letters']], stringsAsFactors = FALSE) 
    # Merge it with the labels 
    labels.df <- merge(plot.levels, boxplot.df, by.x = 'plot.labels', by.y = flev, sort = FALSE) 
    return(labels.df) 
} 
ggplot(my.data, aes(x=Butterfly.colonies, y=tem.range))+ 
geom_boxplot(width = 0.5) + 
scale_y_continuous(breaks = seq(0, 20, by = 2))+ 
theme(plot.margin=unit(c(1,3,1,3),"cm"))+ 
labs(y="tem.range(Celsius")+ 
labs(x="Colony")+ 
geom_text(data = generate_label_df(tHSD, 'Butterfly.colonies'), 
    aes(x = plot.labels, y = V1, label = labels)) 

jedoch am Ende gibt

und damit einen Fehler war, kann ich nicht das Etikett auf meinem Diagramm setzt enter image description here

ich hoffe, es wird wie: enter image description here

+0

Willkommen bei SO, könnten Sie eine Version veröffentlichen, die die eingebauten Daten von R verwendet ... vielleicht verwenden Sie 'data (iris)' und 'aes (Species, Sepal.Length)', um Ihren Testfall zu approximieren. Oder Sie können einfach 'my.data' als Tabellentext hinzufügen, damit die Leute Ihr Problem reproduzieren können. – Nate

Antwort

0

mein Code:

a=aov(tem.range~Butterfly.colonies,data=my.data) 
tHSD <- TukeyHSD(a, ordered = FALSE, conf.level = 0.95) 
generate_label_df <- function(HSD, flev){ 
Tukey.levels <- HSD[[flev]][,4] 
Tukey.labels <- multcompLetters(Tukey.levels)['Letters'] 
plot.labels <- names(Tukey.labels[['Letters']]) 
boxplot.df <- ddply(my.data, flev, function (x) max(fivenum(x$y)) + 0.2) 
plot.levels <- data.frame(plot.labels, labels = Tukey.labels[['Letters']],stringsAsFactors = FALSE) 
labels.df <- merge(plot.levels, boxplot.df, by.x = 'plot.labels', by.y = flev, sort = FALSE) 
return(labels.df)} 
ggplot(my.data, aes(x=Butterfly.colonies, y=tem.range))+geom_boxplot(width = 0.5) + scale_y_continuous(breaks = seq(0, 20, by = 2))+ theme(plot.margin=unit(c(1,3,1,3),"cm"))+labs(y="tem.range(Celsius")+labs(x="Colony")+geom_text(data = generate_label_df(tHSD, 'Butterfly.colonies'), aes(x = plot.labels, y = V1, label = labels)) 
Verwandte Themen