Ho un diagramma di sfaccettatura di 3 righe per 5 colonne. Ogni riga mostra dati che si estendono su diversi intervalli. Per visualizzare correttamente i miei dati in modo che tutto sia mostrato, non imposto un limite sull'asse y.Modifica i limiti dell'asse y per ogni riga di un diagramma di sfaccettatura in ggplot2
Ecco il mio codice:
require(reshape2)
library(ggplot2)
library(RColorBrewer)
fileName = paste("./data_test.csv", sep = "")
## data available here: https://dl.dropboxusercontent.com/u/73950/data_test.csv
mydata = read.csv(fileName,sep=",", header=TRUE)
dataM = melt(mydata,c("id"))
dataM = cbind(dataM,
colsplit(dataM$variable,
pattern = "_",
names = c("Network_model", "order", "category")))
dataM$variable <- NULL
dataM <- dcast(dataM, ... ~ category, value.var = "value")
dataM$minCut <- NULL
dataM$nbr_communities <- NULL
dataM$mean_community_size <- NULL
dataM$density <- NULL
my_palette <- colorRampPalette(rev(brewer.pal(11, "Spectral")))
dataM = melt(dataM, id.vars = c("Network_model", "order", "nodesRemoved", "id"))
my_palette = c(brewer.pal(5, "Blues")[c(4)], brewer.pal(5, "Set1")[c(3)])
ggplot(dataM, aes(x= nodesRemoved ,y= value, group= order, color= order)) +
geom_point(size = .6,alpha = .15,position="jitter") + ## increased size
stat_smooth(se = FALSE, size = .5, alpha = .1, method = "loess") +
scale_color_manual(values=my_palette) +
theme_bw() +
theme(plot.background = element_blank(),
axis.line = element_blank(),
legend.key = element_blank(),
legend.title = element_blank(),
axis.text.x = element_text(size = 8),
axis.text.y = element_text(size = 8)
) +
scale_y_continuous("Value") +
scale_x_continuous("Time", limits=c(0, 100)) +
facet_grid(variable ~ Network_model,scales="free")
che produce questo:
Ora, vorrei limiti selettivamente impostati per ciascuna delle tre file, in modo che la prima riga is limits = c (1.9, 3), il secondo è limits = c (0, 1) e il terzo è limits = c (.3, .7).
Come posso ottenere questo risultato in ggplot2 di sfaccettatura?
Questo può essere possibile con sfaccettature, ma non sarà facile. Se fossi in te, farei tre ggplot, uno per ogni riga. Quindi è possibile impostare i limiti dell'asse y in modo convenzionale, quindi incollare le righe insieme, ad esempio, 'grid.arrange'. (Dubito che riceverai risposte con il codice in esse, a meno che tu non riproduca il tuo esempio riproducibile.) – Gregor
Sebbene, se stai bene con 'ggplot' che imposta i limiti, prova' scale = "free_y" ', non' scale = "libero" '. Senza vedere i tuoi dati è impossibile indovinare se questo è quello che stai cercando. – Gregor
Grazie Gregor, ho aggiunto il set di dati e il codice completo! Saluti! – Rodolphe