2015-11-17 14 views
6

Sto lavorando per mettere insieme alcune demo R per dimostrare alcune delle sue funzionalità ai colleghi. In particolare, desidero interessarli allo ggplot2 e così ho creato un semplice esempio di sfaccettatura utilizzando facet_grid con il set di dati iris.Che cosa causa questo bug di ggplot2?

Per mostrare loro le diverse modalità, volevo mostrare loro cosa sarebbe stato prodotto usando , Species~. e Species~Species (un povero esempio lo ammetto).

Questo sembra suscitare un comportamento strano in ggplot e mi chiedevo perché potrebbe essere. Mi aspetterei che la trama sottostante contenga punti lungo la diagonale in cui i nomi delle specie su ciascun asse coincidono. Invece tutto è elencato sotto setosa sull'asse x e quindi sotto la sua specie reale nell'asse y.

Mi rendo conto che questo esempio non si presenterebbe in nessuno scenario di utilizzo realistico, mi ha semplicemente colpito come un capriccio interessante. Perché ggplot si comporta in questo modo?

Ho anche provato questo con il dataset mtcars e ottenere lo stesso effetto.

library("ggplot2") 
data(iris) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Species~Species) 

ggplot faceted scatterplot showing bug

+1

potreste essere interessati a 'GGally :: ggpairs()' ... –

+0

ha, sì l'ho fatto arrivare a questa dopo aver pensato, dovrei costruire fino alle matrici di scatterplot! – Tumbledown

+0

Non sono sicuro del motivo per cui ciò accade, ma penso che puoi ottenere ciò che desideri creando un'altra variabile 'iris $ Specie1 <- iris $ Specie' e sfaccettatura su' Specie ~ Specie1'. –

risposta

0

Questo perché non si dispone di informazioni per ggplot2 per stampare una combinazione di, ad esempio, setosa e versicolor.

Qui in questo codice, riutilizzo il commento @Sam e campionamento (modifica l'ordine) della nuova specie di colonna che stiamo creando. Questo crea un Combinazione di specie. Ecologicamente, probabilmente è fuorviante farlo, come ho fatto io, ma di sicuro stampa le specie nelle combinazioni dei diversi facet_grid.

library("ggplot2") 
data(iris) 
iris$Species1 <- sample(iris$Species) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Species~Species1) 

Questo è quello che potrebbe sembrare. Ancora una volta, ho appena creato diverse coppie di specie per stampare coppie nella griglia delle sfaccettature. R_output

Questo sarebbe un esempio con diversi anni

iris$Year <- rep(2010:2014,dim(iris)[2]) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Year~Species) 

enter image description here

Problemi correlati