Ho colpito un ostacolo nella scrittura di una funzione ggplot. Sto cercando di modificare le etichette sfaccettatura in una trama ggplot facet_wrap .... ma la sua prova più complicato di quanto ho pensato che sarebbe stato ....ggplot rinominazione etichette facet in facet_wrap
I dati che sto usando qui si può accedere
str(ggdata)
'data.frame': 72 obs. of 8 variables:
$ Season : Factor w/ 3 levels "Autumn","Spring",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Site : Factor w/ 27 levels "Afon Cadnant",..: 13 13 13 13 13 13 13 13 13 13 ...
$ Isotope: Factor w/ 4 levels "14CAA","14CGlu",..: 1 1 1 1 1 1 2 2 2 2 ...
$ Time : int 0 2 5 24 48 72 0 2 5 24 ...
$ n : int 3 3 3 3 3 3 3 3 3 3 ...
$ mean : num 100 88.4 80.7 40.5 27.6 ...
$ sd : num 0 1.74 2.85 2.58 2.55 ...
$ se : num 0 1 1.65 1.49 1.47 ...
ho scritto la seguente funzione per creare la ggplot che utilizza i livelli di fattore isotopi di etichettare le sfaccettature:
plot_func <- function(T) {site_plots <- ggplot(data = T) + geom_point(aes(Time, mean, colour = Season, shape = Season)) +
geom_line(aes(Time, mean, colour = Season, linetype = Season)) +
geom_errorbar(aes(Time, mean, ymax = (mean + se), ymin = (mean - se)), width = 2) +
labs(title = T$Site[1], y = "Percentage of isotope remaining in solution", x = "Time (h)") +
scale_x_continuous(breaks=c(0, 24, 48, 72)) +
scale_y_continuous(limits=c(0,115), breaks = c(0,25,50,75,100)) +
theme(axis.title.y = element_text(vjust = 5)) +
theme(axis.title.x = element_text(vjust = -5)) + theme(plot.title = element_text(vjust = -10)) +
theme_bw() + facet_wrap(~Isotope, ncol =2)
print(site_plots)
ggsave(plot = site_plots, filename = paste(T$Site[1], ".pdf"),
path = "C:/Users/afs61d/Dropbox/Academic/R/Practice datasets/Helens_data/Site_Isotope_Season_plots/",
width = 9, height = 7, dpi = 300)}
conseguente questo bel grafico:
che è bello, ma voglio cambiare le etichette sfaccettatura ora ... aver fatto qualche rovistando google ho pensato che potrei essere in grado di utilizzare la funzione labeller
come argomento da passare a facet_wrap
. Dopo un'ora frustrante ho scoperto che funziona solo con facet_grid
!!! ??? Quindi, un metodo alternativo è stato quello di cambiare i nomi dei livelli del fattore tanto mi dalle etichette sfaccettatura che voglio ::
gdata$Isotope <- revalue(x = ggdata$Isotope,
c("14CAA" = " 14C Amino Acids", "14CGlu" = "14C Glucose",
"14cGlu6P" = "14C Glucose-6-phosphate", "33P" = "33P Phosphate"))
questo funziona, ma il problema che ho adesso è che voglio i numeri nelle etichette a essere super-sceneggiato. Qualcuno può suggerire il modo migliore per raggiungere questo obiettivo? Grazie
penso "etichettatrice" è disponibile per facet_wrap nella versione di sviluppo di ggplot: http://docs.ggplot2.org/dev/facet_wrap.html –
@BenBolker Grazie ... che sarebbe molto utile - come posso installarlo? –
@ eipi10 Non penso che 'labeller' possa essere passato a' facet_wrap' ... che è il nodo del problema –