2016-03-30 18 views
2

Ich habe eine CSV-Datei mit 10 Spalten und möchte 7 von ihnen zusammen mit Text-Datei-Zeitreihe zu lesen und zu plotten. Mit dem folgenden Code kann ich sie zeichnen, aber mit wenigen Problemen konfrontiert:Panel Plot mit r

1] Leerzeichen zwischen den Plots macht jedes Diagramm sehr klein aussehen. Wie benutzt man den meisten Platz? 2] Legende ist überlagert 7. Handlung. Wie es an der Platte Zeichnungsfläche von 8 zu platzieren und 9 (da keine Platte Plot Bereiche 8 verwenden und 9)

3], wie eine gemeinsame x und y-Achse bilden und einzelne Titel jedes Panel Stück definieren

library(qmap) 
obs <- read.table("D:/test.txt") 
mod <- read.csv("D:/pr.csv", header = FALSE) 
par(mfrow=c(3,3), oma = c(4, 1, 1, 1)) 
for(i in 4:10){ 
modp <- mod[,i] 
qm1.fit <- fitQmap(obs,modp, 
       method="PTF", 
       transfun="expasympt", 
       cost="RSS",wett.day=TRUE) 
qm1 <- doQmap(modprecip,qm1.fit) 

# repeated same procedure for qm2, qm3, qm4, and qm5 

# QQ-plot of all mappings 
obs_v <- as.vector(as.matrix(obs)) 
mod_v <- as.vector(as.matrix(modp)) 
qqplot(mod_v, obs_v, col = 1, xlab = 'Pm [mm/day]', ylab = 'Po [mm/day]') 
qqline(qm1, col = 2, lwd = 2) 
qqline(qm2, col = 3, lwd = 2) 
qqline(qm3, col = 4, lwd = 2) 
qqline(qm5, col = 5, lwd = 2) 

} 

legend("bottom", inset=c(-0.2,0), legend=c("A","B"), pch=c(1,3), title="Group") 

Jede Hilfe wird

enter image description here

+0

Es gibt keine Daten oder Zahlen des Ergebnisses. Was sollen wir tun? –

+0

@ RomanLuštrik hinzugefügt – Ibe

+0

Dies kann leicht gelöst werden mit ['ggplot2 :: facet_wrap'] (http://docs.ggplot2.org/current/facet_wrap.html). –

Antwort

2

Diese Art von Plots lässt sich sehr einfach generiert werden ggplot2 sehr dankbar. Ich werde das folgende Beispiel aus der ggplot2 Dokumentation zeigen, wie Ihre Frage nicht ein wiederholbares Beispiel enthält:

library(ggplot2) 
d <- ggplot(diamonds, aes(carat, price, fill = ..density..)) + 
    xlim(0, 2) + stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) 
d + facet_wrap(~ color) 

enter image description here

ggplot2 Adressen Ihre Fragen:

  1. Weiß Raum ist nicht mehr ein Problem.
  2. Legende ist schön zur Seite gestellt.
  3. standardmäßig die x- und y-Achse ist die gleiche (Sie können dies bei Bedarf deaktivieren)

Siehe auch this tutorial Ich schrieb über ggplot2, wenn Sie mit, wie ggplot2 Arbeiten bekommen bis beschleunigen wollen.

+0

also muss ich einen Datenrahmen als eine Ausgabe von for-Schleife schreiben und es in ggplot2 verwenden, richtig? – Ibe

+0

Richtig, obwohl ich selbst eine 'apply'-Stilschleife verwenden würde (z.B.' lapply'). Siehe auch [diesen Link] (http://stcorp.nl/R_course/tutorial_control_flow.html). –

+0

'lapply' ist sehr schnell, um Datenrahmen zu geben, aber wie verwende ich jede Spalte in diesem Datenrahmen einzeln und verarbeiten Sie sie zusammen mit einer separaten Zeitreihe. Wenig kämpfen .... – Ibe