Säulendiagramm mit mehr als zwei Variablen

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von EDi »

grid() tauchte bisher nicht in deinem code auf, woher sollen wir wissen wie du es anwendest?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von bigben »

Normalerweise wird alles in der Reihenfolge des Aufrufs übereinander gemalt und das zuletzt gemalte steht im Vordergrund. Wird mit diesem grid auch so sein.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Quitter
Beiträge: 11
Registriert: Di Nov 10, 2020 5:00 pm

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von Quitter »

Dachte das könnte man so nachvollziehen.
Hier ist ein Beispiel:

Code: Alles auswählen

plot(Wassermenge$Tag, Wassermenge$Frauen, xlab = "", ylab = "Wassermenge (ml)", 
     type="o", ylim=c(0,1200), axes = FALSE, pch=15, col="firebrick4", cex=2)
grid(lwd=1, lty = 3, col="darkgrey")
legend("topright", "Frauen", pch=15, col="firebrick4")
axis(1, seq(0,50,5), lwd=1)
axis(2, seq(0,1200,100), lwd = 1, las=2)
box()
Allerdings wüsste ich jetzt nicht, wie ich das grid() hinter die Punkte bekommen soll.
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von bigben »

Indem Du die Punkte mit points oder lines nochmal drüber malst.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Quitter
Beiträge: 11
Registriert: Di Nov 10, 2020 5:00 pm

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von Quitter »

Stimmt :lol: danke.

Ich würde gern noch etwas fragen.
Ich habe 14 pH-Werte, welche ich alle einzeln einzeichnen müsste.
Um mir eine 14-teilige Legende zu sparen wollte ich Fragen, ob man einzelne Punkte im Plot beschriften kann?
Ich wüsste sonst nicht wie ich das halbwegs anschaulich hinbekommen soll.

phWerte.xlsx
(8.76 KiB) 46-mal heruntergeladen
hier mal die Datei dazu.
Die vorderen Buchstaben "B", "F", "M" stehen jeweils für eine Einheit. Deren Werte sollen untereinander.
Also Bspw. die 3 Werte für "B - Vorher", rechts daneben die 3 Werte für "B- Nachher", dann das selbe mit "F" und "M".
Das Problem ist, dass jeder Punkt seine Beschriftung mit "B-L" oder "B-Oh" bekommen muss, da es wichtige Informationen sind.
Wahrscheinlich etwas schwierig zu verstehen.
So stelle ich mir das jedenfalls vor.

Edit: Ok, die Punkte habe ich schonmal einzeln in den Plot bekommen. Zwar umständlich, aber sie sind drinne. Jetzt würde mich nur noch interessieren ob ich die Punkte im Plot beschriften kann um die XXL-Legende zu umgehen.
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von bigben »

Mit dem text() Befehl kann man alles überall hinschreiben, auch Beschriftungen oder pH-Werte.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Quitter
Beiträge: 11
Registriert: Di Nov 10, 2020 5:00 pm

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von Quitter »

Moin,
@Bernhard - mit dem text() hat es geklappt. Danke dafür.

Ich stehe erneuert vor einem Problem und komme nicht weiter.
Obwohl ich axes=FALSE habe, stehen dennoch Zahlen an der nicht vorhandenen x-Achse.
Ich stelle mal Code und Datei dazu hinein.
Ich kann mir nur vorstellen, dass es eventuell an der Datei liegt, vielleicht habe ich da ja etwas falsch abgespeichert. Sonst habe ich es genauso gemacht, wie die letzten Male auch.

Code: Alles auswählen

barplot(data=DglBuche, DglBuche$Summe.pro.Tag ~ DglBuche$Tag, 
        ylab="Summe gezählter Sämlinge", xlab = "Tag nach der Aussaat",
        ylim=c(0,65), xlim=c(0,50), axes= FALSE)
und die Datei zum Code:
Douglasie auf Buche.xlsx
(11.54 KiB) 50-mal heruntergeladen
Vielleicht mag ja nochmal jemand helfen.

Liebe Grüße
Dateianhänge
Rplot.png
Quitter
Beiträge: 11
Registriert: Di Nov 10, 2020 5:00 pm

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von Quitter »

Habs mit axesnames=FALSE weg bekommen.
Mal sehen ob jetzt der Rest klappt.

Ok. Die Säulen nehmen allerdings nicht die neue x-Achse an. Es besteht keine Verbindung unter den x und y-Werten.
Dateianhänge
Rplot01.png
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von bigben »

bigben hat geschrieben: Mi Nov 11, 2020 7:54 amVergleichende Zeitreihen sind oft viel besser mit Punkten oder Linien als mit Balkengrafiken zu machen, [...]

Dazu kommt noch, dass die Barplot-Funktion in base graphics ungewöhnlich bzw gewöhnungsbedürftig ist.
Yep, barplot und axis passen nicht so einfach zusammen:

Code: Alles auswählen

barplot(1:20)
axis(1, at = 1:20)
Dafür gibt es ja das names.arg-Argument. Das ist wahrscheinlich auch die beste Antwort auf Deine Frage.
Natürlich kann man in R immer auch in die Trickkiste greifen und wenn man unbedingt eine x-Achse braucht sowas hier tun:

Code: Alles auswählen

bp <- barplot(1:10)
axis(1, at = bp, labels = 1:10)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Säulendiagramm mit mehr als zwei Variablen

Beitrag von EDi »

Irgendwie werde ich das Gefühl nicht los, dass dies alles mit ggplot2 einfacher wäre...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten