Mi sembra che questo dovrebbe essere ovvio ... tutto quello che sto cercando di fare è rimuovere l'asse x dal fondo del mio grafico e aggiungerlo in cima.Mettere l'asse x nella parte superiore del grafico ggplot2
Ecco un esempio riproducibile. I dati più codice per rendere il seguente grafico:
library(reshape2)
library(ggplot2)
data(mtcars)
dat <- with(mtcars, data.frame(mpg, cyl, disp, hp, wt, gear))
cor.matrix <- round(cor(dat, use = "pairwise.complete.obs", method = "spearman"), digits = 2)
diag(cor.matrix)<-NA
cor.dat <- melt(cor.matrix)
cor.dat <- data.frame(cor.dat)
cor.dat <- cor.dat[complete.cases(cor.dat),]
ggplot(cor.dat, aes(Var2, Var1, fill = value)) +
geom_tile(colour="gray90", size=1.5, stat="identity") +
geom_text(data=cor.dat, aes(Var2, Var1, label = value), color="black", size=rel(4.5)) +
scale_fill_gradient(low = "white", high = "dodgerblue", space = "Lab", na.value = "gray90", guide = "colourbar") +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
xlab("") +
ylab("") +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_rect(fill=NA,color="gray90", size=0.5, linetype="solid"),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.background = element_rect(fill="gray90"),
plot.background = element_rect(fill="gray90"),
legend.position = "none",
axis.text = element_text(color="black", size=14))
Ma quello che sto cercando di produrre è- sembra che questo dovrebbe essere ovvio (ad esempio, è molto facile da fare in base-R) , ma non sono riuscito a trovare quello che sto cercando in ggplot2.
Gli assi in ggplot non sono altrettanto flessibile come nella base R. Per il tuo esempio, non stai usando alcun componente dell'asse tranne le etichette. Direi che la soluzione migliore è non tracciare un asse, e basta usare 'geom_text' per mettere le etichette dove vuoi. – Gregor
Lo spostamento dell'asse x è difficile, ma è possibile utilizzando le funzioni ggplot_gtable e ggplot_build. Queste funzioni "tracciano" il ggplot, ma anziché lo schermo, rendono "grob" i cosiddetti oggetti che rappresentano gli elementi visivi (una scatola, una linea, una griglia, ecc.), Ma su un livello diverso rispetto agli oggetti ggplot (scale , temi, estetica, ecc.). Puoi manipolare i grobs come meglio credi, scambiandoli, ridimensionandoli ecc. – MrGumble
A meno che tu non stia automatizzando questo, potresti semplicemente voler fare la figura e poi modificarla dopo il fatto. Ci vorrebbero alcuni secondi per spostare l'asse in Illustrator o Inkscape. – Minnow