2015-12-18 2 views
5

voglio tracciare, con ggplot2, una matrice di confusione come questo:geom_raster() senza imbottitura e nessuna leggenda

# Original data 
samples <- t(rmultinom(50, size = 7, prob = rep(0.1,10))) 

# Co-ocurrence matrix 
coincidences <- sapply(1:ncol(samples), function(i){ colSums(samples[,i]==samples) }) 

Se uso geom_roster:

p <- ggplot(melt(coincidences), aes(Var1,Var2, fill=value)) + geom_raster() 

ottengo questo: enter image description here

Come posso ottenere questo? (senza legende, senza imbottitura) enter image description here

risposta

7

È necessario utilizzare scale_fill_continuous(guide = FALSE) per rimuovere la legenda. Poi, per sbarazzarsi di tutti l'imbottitura (assi, etichette, ecc) è possibile utilizzare questo lungo comando theme():

require(ggplot2) 
# Original data 
samples <- t(rmultinom(50, size = 7, prob = rep(0.1,10))) 

# Co-ocurrence matrix 
coincidences <- sapply(1:ncol(samples), function(i) { 
    colSums(samples[,i]==samples) 
}) 

p <- ggplot(melt(coincidences), aes(Var1, Var2, fill = value)) + 
    geom_raster() + 
    scale_fill_continuous(guide = FALSE) + 
    theme(axis.text  = element_blank(), 
     axis.ticks  = element_blank(), 
     axis.title  = element_blank(), 
     panel.background = element_blank()) 

enter image description here

+0

Si potrebbe anche usare solo 'axis.text' invece di entrambe' assi. text.x' e 'axis.text.y'. Quando si utilizza 'axis.text', si specifica l'impostazione per l'asse x & y allo stesso tempo. – Jaap

+0

@Jaap Buon punto. Ho cambiato la risposta di conseguenza. – christoph