abline an falscher Position

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
Nad.boe
Beiträge: 5
Registriert: Sa Aug 08, 2020 9:01 pm

abline an falscher Position

Beitrag von Nad.boe »

Hallo,

ich habe einen Barplot gemacht und wollte den Mittelwert mit einer abline einzeichnen. Das funktioniert in den meisten Fällen auch, allerdings habe ich ein paar Fälle, in denen die Linie einfach nicht an der richtigen Stelle ist (z.B. der Mittelwert is 4,3 und die Linie wird bei 4 eingezeichnet).

Code: Alles auswählen

barplot(table(FB1$Item4), 
	ylim = c(0,12), 
	axis.lty = 1, 
	main = names(FB1$Item4), 
	ylab = "Häufigkeit", 
	xlab = "Kategorien",
	cex.lab=2, 
	cex.axis=2, 
	cex.names = 2, 
	cex.main=2.5)
abline(v=mean(as.numeric(FB1$Item4)), col="firebrick3", lwd=3)
Ich habe leider keine Ahnung, was da falsch läuft. Hat jemand eine Idee, wie man das Problem beheben kann?

Liebe Grüße,
Nadine
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: abline an falscher Position

Beitrag von bigben »

Hallo Nadine,

Code: Alles auswählen

Error in table(FB1$Item4) : object 'FB1' not found
ohne den Datensatz FB1 läuft das bei uns nicht, der Fehler ist also hier nicht nachzukochen. Bitte poste ein paar Beispieldaten, mit denen das Poblem auftritt. viewtopic.php?f=20&t=11

Es gibt mehrere mögliche Szenarien, die man sich denken kann. Wo sollte Deiner Meinung nach hier der Mittelwert eingezeichnet werden?

Code: Alles auswählen

n <- c(1, 1, 1, 1, 2, 2, 2, 2, 2, 10, 10)
barplot(table(n))
In vielen Fällen wird es einfacher, wenn man anstelle von barplot einfach die Funktion plot nimmt. In meinem Beispiel etwa so:

Code: Alles auswählen

n <- c(1, 1, 1, 1, 2, 2, 2, 2, 2, 10, 10)
plot(table(n))
abline(v = mean(n), col ="firebrick", lty=3)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Nad.boe
Beiträge: 5
Registriert: Sa Aug 08, 2020 9:01 pm

Re: abline an falscher Position

Beitrag von Nad.boe »

Hallo Bernhard,

Code: Alles auswählen

Error in table(FB1$Item4) : object 'FB1' not found
ohne den Datensatz FB1 läuft das bei uns nicht, der Fehler ist also hier nicht nachzukochen. Bitte poste ein paar Beispieldaten, mit denen das Poblem auftritt. viewtopic.php?f=20&t=11
Entschuldigung, da habe ich tatsächlich im Eifer des Gefechts nicht dran gedacht. Das entsprechende Item wäre mit folgenden Werten:

Code: Alles auswählen

Item4 <- c(5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 2, 2)
barplot(table(Item4), ylim = c(0,12), axis.lty = 1, 
          main = "Item 4", ylab = "Häufigkeit", 
          xlab = "Kategorien", cex.lab=2, 
          cex.axis=2, cex.names = 2, 
          cex.main=2.5)
  abline(v=round(mean(as.numeric(Item4)),1), col="firebrick3", lwd=3)
Wo sollte Deiner Meinung nach hier der Mittelwert eingezeichnet werden?
Wenn ich mir den Mittelwert ausgeben lasse, dann kommt 4,3 raus, eingezeichnet wird die Linie aber bei 4,0.
In vielen Fällen wird es einfacher, wenn man anstelle von barplot einfach die Funktion plot nimmt. In meinem Beispiel etwa so:

Code: Alles auswählen

n <- c(1, 1, 1, 1, 2, 2, 2, 2, 2, 10, 10)
plot(table(n))
abline(v = mean(n), col ="firebrick", lty=3)
Wenn ich den Plot mache, dann ist die Linie an der richtigen Stelle eingezeichnet :shock: Das verstehe ich wirklich nicht, warum es da klappt und beim barplot nicht :(

Liebe Grüße,
Nadine
dvf
Beiträge: 24
Registriert: Mo Feb 27, 2017 12:44 pm

Re: abline an falscher Position

Beitrag von dvf »

Wenn man mittels locator() die Lage der Mittelwertlinie überprüft, erhält man für den x-Wert 4.3. Also i. O.
Was nicht "stimmt", sind die x-Werte für die Säulen.
==> barplot() eignet sich nicht für die gewünschte Darstellung. Wie bigben schon gesagt hat, sollte man plot() nehmen.

Gruß
dvf
Antworten