2011-12-09 17 views
6

Ho generato un dendrogramma utilizzando ggdendro e ggplot. Ho due problemi relativi alla trama generata.Rimozione del margine e modifica dello stile del carattere per le etichette in ggplot

  1. È possibile tagliare un margine dal grafico generato?
  2. Come modificare lo stile del carattere, ad esempio la dimensione, per l'etichetta lungo un asse?

Nel grafico, le due aree contrassegnate da "riquadro rosso" sono i margini che vorrei rimuovere. Le sei etichette lungo l'asse x sono contrassegnate da un colore giallo. Vorrei aumentare la dimensione di loro.

enter image description here

Il codice:

> x<-read.csv("test1.csv",header=TRUE) 
> d<-as.dist(x,diag=FALSE,upper=FALSE) 
> hc<-hclust(d,"ave") 
> dhc<-as.dendrogram(hc) 
> ddata<-dendro_data(dhc,type="rectangle") 
> ddata$labels$text <- gsub("\\."," ",ddata$labels$text) 
> fig1<-ggplot(segment(ddata))+geom_segment(aes(x=x0,y=y0,xend=x1,yend=y1)) 
> fig1<-fig1+xlab(NULL)+ylab(NULL)+opts(panel.grid.minor=theme_blank()) 
> fig1<-fig1+scale_x_discrete(limits=ddata$labels$text) 
> fig1<-fig1+coord_flip() 
> last_plot() 
> fig1<-last_plot() 
> ggsave("test1.pdf") 
+0

+1 Per il codice di pubblicazione e un grafico. – Andrie

+2

se puoi postare 'test1.csv' anche allora possiamo provare a rispondere alla tua prossima domanda, sulla dimensione del titolo ... –

risposta

6

Per aumentare la dimensione delle etichette degli assi (e molto, molto di più) si utilizza theme (nelle versioni precedenti di ggplot2 questo è stato chiamato opts()):

+ theme(axis.text.x = element_text(size = 12)) 

li renderà molto più grandi. Per ridurre i margini, si consiglia di utilizzare l'argomento expand:

+ scale_x_continuous(expand = c(0,0)) 

dove i numeri sono gli additivi e fattori di espansione moltiplicativi per i limiti di trama.

Più in generale, queste cose sono tutte abbastanza ben documentate in posizioni come here o here. O potresti semplicemente comprare il libro di Hadley, che risponderà a quasi tutte le domande ggplot che avrai. (Scherzi a parte.)

+1

Grazie. Ho provato + scale_x_continuous (expand = c (0,0)), ma rimuoverà quelle etichette stringa lungo l'asse y e non rimuoverà il margine lungo l'asse y. –

+1

@ bit-question Fai la stessa cosa ma con 'scale_y_continuous' per rimuovere i margini y. – joran

Problemi correlati