J'ai l'impression après avoir creusé que cela ne fonctionnera probablement pas et je devrai découvrir une autre méthode mais je vais quand même demander.
Je dois représenter des graphiques que je veux tracer sur le même graphique, en utilisant par(mfrow=c(1,2))
Mon code pour les graphiques est le suivant:
mTotal <- mean(data$Total)
mTotal
data$valence1[data$Total >= mTotal] <- "Above Mean"
data$valence1[data$Total < mTotal] <- "Below Mean"
data$valence2[data$Delta >= 0] <- "Positive"
data$valence2[data$Delta < 0] <- "Negative"
data
par(mfrow=c(1,2))
ggplot(data,
aes(x = Index,
y = Total,
fill = valence1)) +
geom_bar(stat = "identity",
colour = "black",
alpha = 0.618) +
geom_hline(yintercept = mTotal,
linetype = "dashed",
colour = "red") +
annotate("text", x = 19, y = mTotal + 50,
label = "Problem Period") +
xlab("Date") +
ylab("Ambulance Arrivals") +
ggtitle("Ambulance Arrivals by Month
Jan 2013 - Feb 2014")
maxDelta <- max(data$Delta)
maxDelta
minDelta <- min(data$Delta)
minDelta
ggplot(data,
aes(x = Index,
y = Delta,
fill = valence2)) +
geom_bar(stat = "identity",
position = "identity",
colour = "black",
alpha = 0.618) +
annotate("rect", xmin = 13.5, xmax = 24.5,
ymin = minDelta, ymax = maxDelta,
alpha = 0.3, fill = "blue") +
annotate("text", x = 19, y = maxDelta + 25,
label = "Problem Period") +
xlab("Date") +
ylab("Change in Arrivals") +
ggtitle("Change in Ambulance Arrivals Month over Month")
Si cela n'est pas possible, alors une direction vers un meilleur itinéraire serait appréciée.
Merci,
Regardez le package gridExtra
et utilisez grid.arrange
au lieu. Fonctionne à merveille avec ggplot
.
Attribuez simplement votre premier ggplot
appel à une variable (par exemple plot1
) et la suivante (par exemple plot2
) et faites quelque chose comme:
grid.arrange(plot1, plot2, nrow=1, ncol=2)
mfrow
est destiné aux graphiques de base. Pour ggplot2
vous avez besoin d'une approche différente, comme celle mentionnée par @hrbmstr, ou celle-ci:
library("ggplot2")
library("grid")
a <- qplot(x = rnorm(10))
b <- qplot(x = rnorm(10))
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
print(a, vp = vplayout(1,1))
print(b, vp = vplayout(1,2))
Tard dans la soirée, mais j'ai juste eu à faire face à cela et j'ai trouvé une solution simple pour les multiplots simplement en regardant dans le package gridExtra
(builind sur @hrbrmstr):
library("ggplot2")
library("gridExtra")
pl <- lapply(1:4, function(.x) qplot(1:10, rnorm(10), main=paste("plot", .x)))
marrangeGrob(pl, nrow=2, ncol=2)
Mettez simplement votre fonction de génération de tracé dans lapply
et vous êtes prêt.