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

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
Meister Eder
Beiträge: 2
Registriert: Do Mai 14, 2020 2:19 pm

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

Beitrag 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
Hufeisen
Beiträge: 162
Registriert: Fr Aug 31, 2018 6:34 pm

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

Beitrag 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()
Dateianhänge
x-Achse in Box plotten.png
Meister Eder
Beiträge: 2
Registriert: Do Mai 14, 2020 2:19 pm

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

Beitrag von Meister Eder »

Hallo,

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

Viele Grüße
Antworten