Seite 1 von 1

X- Achse mit y-Achse/Box verbinden sowie den Abstand der Grafiken verringern

Verfasst: Do Mai 14, 2020 3:41 pm
von Meister Eder
Hallo zusammen,

wie bei den beiden linken Grafiken zu sehen ist, gibt es einen Abstand der x-Achse zur y-Achse sowie zur Box. Bisher habe ich leider keine passable Lösung gefunden, die x-Achse mit der y-Achse sowie der Box zu verbinden. Ferner möchte ich den weißen Leerraum zwischen den vier Grafiken reduzieren. Bisher habe ich versucht, die Margins (Bottom, Top) der einzelnen Grafiken zu ändern, was lediglich zu Verzerrungen führt. Anbei ein Code:

Code: Alles auswählen

par(mfcol=c(2,2),oma=c(0,0,0,0))
time<-seq(-10,10,1)
A<-seq(-2,2,by=0.2)
plot(time,A,xlab="",ylab=expression(bar(A)~"in %"),col="blue", type="o",pch=18,axes=FALSE)
par(mar=c(5,4.5,4,1)+.1)
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9,pos=0)
axis(side=2,cex.axis=0.9,las=2)
box()
plot(time,A,xlab="Zeitpunkt",ylab=expression(bar(AA)~"in %"),col="blue",type="o",pch=18,axes=FALSE)
par(mar=c(5,4.5,4,1)+.1)
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9,pos=0)
axis(side=2,cex.axis=0.9,las=2)
box()
B<-seq(0.5,5.5,by=0.25)
plot(time,B,xlab="",ylab=expression(bar(B)~"in %"),col="blue",type="o",pch=18,axes=FALSE)
par(mar=c(5,4.5,4,1)+.1)
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9)
axis(side=2,cex.axis=0.9,las=2)
box()
plot(time,B,xlab="Zeitpunkt",ylab=expression(bar(BB)~"in %"),col="blue",type="o",pch=18,axes=FALSE)
par(mar=c(5,4.5,4,1)+.1)
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9)
axis(side=2,cex.axis=0.9,las=2)
box()
Bild

Ich würde mich freuen, wenn mir jemand weiterhelfen kann.

Viele Grüße

Re: X- Achse mit y-Achse/Box verbinden sowie den Abstand der Grafiken verringern

Verfasst: Sa Mai 16, 2020 10:44 am
von Hufeisen
Hallo,

ich kann Dir leider keine voll befriedigende Lösung anbieten. Die Abstände zwischen den einzelnen Grafiken manipuliere ich immer mit par(mar = c(b, l, t, r)) [siehe Code]. Die x-Achse kann man eigentlich von und bis zu den aktuellen Grenzen des plots zeichnen lassen, die in par("usr") hinterlegt sind. Eigentlich, weil es hier nicht klappt. Ich habe mich am ersten plot probiert. In par("usr")[2] ist der rechte Rand mit 10.8 hinterlegt, trotzdem wird die x-Achse nicht bis zur Box gezeichnet. Meine Fähigkeiten reichen leider nicht aus, um nachzuschauen, welche Grenzen box() benutzt, um diese abzugreifen. Deshalb habe ich manuell + 1 ergänzt. Die Lösung für die x-Achse besteht darin, dass man zwei mal eine Achse zeichnet - einmal nur den Strich und einmal nur die ticks und die label. Dafür habe ich leider länger gebraucht, als mir lieb ist. :oops:

Code: Alles auswählen

par(mfcol=c(2,2), mar=c(2,4,1,1)+.1) # Leere Fläche zwischen plots global gesetzt

# Daten plotten
time<-seq(-10,10,1)
A<-seq(-2,2,by=0.2)
plot(time,A,xlab="",ylab=expression(bar(A)~"in %"),col="blue", type="o",pch=18,axes=FALSE)
# par(mar=c(5,4.5,4,1)+.1)

# eine leere x-Achse plotten
axis(1, at = seq(par("usr")[1], par("usr")[2] + 1), labels = FALSE, lwd.ticks = 0, pos=0) # manuell + 1 ergänzt

# ticks und labels ergänzen
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9,pos=0)

# y-Achse plotten
axis(side=2,cex.axis=0.9,las=2)
box()

# Dein alter Code
plot(time,A,xlab="Zeitpunkt",ylab=expression(bar(AA)~"in %"),col="blue",type="o",pch=18,axes=FALSE)
# par(mar=c(5,4.5,4,1)+.1)
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9,pos=0)
axis(side=2,cex.axis=0.9,las=2)
box()

B<-seq(0.5,5.5,by=0.25)
plot(time,B,xlab="",ylab=expression(bar(B)~"in %"),col="blue",type="o",pch=18,axes=FALSE)
# par(mar=c(5,4.5,4,1)+.1)
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9)
axis(side=2,cex.axis=0.9,las=2)
box()

plot(time,B,xlab="Zeitpunkt",ylab=expression(bar(BB)~"in %"),col="blue",type="o",pch=18,axes=FALSE)
# par(mar=c(5,4.5,4,1)+.1)
axis(side=1,at=seq(-10,10,by=2),cex.axis=0.9)
axis(side=2,cex.axis=0.9,las=2)
box()

Re: X- Achse mit y-Achse/Box verbinden sowie den Abstand der Grafiken verringern

Verfasst: So Mai 17, 2020 9:35 am
von Meister Eder
Hallo,

vielen Dank für deine Hilfe. Damit hast du mit sehr weitergeholfen!

Viele Grüße