2014-10-04 3 views
22

mi è stato chiesto di inserire un bordo completo intorno al mio appezzamento di seguito:Add pannello di confine per ggplot2

enter image description here

Utilizzando panel.border = element_rect(colour = "black") risultati a perdere nella trama diventare vuoto.

Non posso usare theme_bw() in quanto non ha la stessa funzionalità del tema al solito, il codice Attualmente sto usando è qui sotto:

graph<-ggplot(d,aes(x=d$AOE, y=d$MEI) 
      )+ 
    geom_point(shape=20, size=3)+ 
    geom_rug()+ 
    annotate("text", x = -1.1, y = 14000, label = "27/04/2011") + 
    annotate("text", x = -1.3, y = 10400, label = "03/04/1974") + 
    xlab("MEI")+ 
    ylab("AOE")+ 
    scale_y_log10()+ 
    theme(axis.text.y = element_text(size=14), 
     axis.text.x = element_text(size=14), 
     axis.title.y = element_text(size=14), 
     axis.title.x = element_text(size=14), 
     panel.background = element_blank(), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     axis.line = element_line(colour = "black") 
) 

graph 

Qualche consiglio su come ottenere un bordo nero pieno sarebbe essere molto apprezzato!

risposta

30

Per utilizzare panel.border, è necessario specificare un riempimento vuoto utilizzando fill=NA.

Prova questo:

library(ggplot2) 

ggplot(mtcars, aes(mpg, disp)) + geom_point() + geom_rug() + 
    theme(axis.text.y = element_text(size=14), 
     axis.text.x = element_text(size=14), 
     axis.title.y = element_text(size=14), 
     axis.title.x = element_text(size=14), 
     panel.background = element_blank(), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     axis.line = element_line(colour = "black"), 
     panel.border = element_rect(colour = "black", fill=NA, size=5) 
) 

enter image description here

7

È possibile utilizzare theme_bw() e theme() insieme. Questo dovrebbe funzionare:

# creating some data 
set.seed(1) 
d <- data.frame(MEI=rnorm(100), AOE=rlnorm(100, 10, 5)) 

# creating the plot 
ggplot(d,aes(x=MEI, y=AOE)) + 
    geom_point(shape=20, size=3) + 
    geom_rug() + 
    scale_y_log10() + 
    theme_bw() + 
    theme(panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     panel.background = element_rect(colour = "black", size=4)) 

questo dà: enter image description here


una soluzione senza theme_bw() e ispirato @Andrie, ma con l'uso di panel.background invece di panel.border:

ggplot(d,aes(x=MEI, y=AOE)) + 
    geom_point(shape=20, size=3) + 
    geom_rug() + 
    scale_y_log10() + 
    theme(panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     panel.background = element_rect(colour = "black", size=4, fill=NA)) 

questo darà la stessa trama esatta. La differenza tra panel.background e panel.border è che panel.background viene disegnato sotto il grafico e panel.border viene disegnato sulla parte superiore della trama.

+0

Nessuno di questi metodi, e nemmeno loro combinati, il lavoro con la dimensione = 1, che viene normalmente utilizzato per le pubblicazioni. –