Histogramm mit gleichen Abstände auf x-Achse

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
Edward
Beiträge: 3
Registriert: Di Sep 15, 2020 12:04 pm

Histogramm mit gleichen Abstände auf x-Achse

Beitrag von Edward »

Hallo,

ich bin ganz neu in R und habe ein Problem, auf das ich leider keine Lösung gefunden habe. In einer Studie wurde das Alter erfasst (z.B. von 23-27 Jahren), wobei einige Zwischenwerte nicht auftreten (z.B. 24 und 26 Jahre). Ich möchte daraus ein Histogramm erstellen.

Hier ein Minimalbeispiel. (Das Data Frame lese ich eigentlich aus einer Excel ein. Für das Beispiel hier erzeuge ich es.)
t = c(23, 23, 27, 25, 27)
df_test = data.frame(t)
barplot(table(df_test))

Mein Problem ist, dass in dem Plot die 26 nicht auftaucht, was die Achse verzerrt. Ich möchte dass die x-Achse vom Minimalalter bis zum Maximalalter mit gleichen Abständen verläuft. Ich hoffe mir kann jemand helfen :)

Viele Grüße
Edward

bigben
Beiträge: 1736
Registriert: Mi Okt 12, 2016 9:09 am

Re: Histogramm mit gleichen Abstände auf x-Achse

Beitrag von bigben »

barplot ist für Balkengrafiken, hist ist für Histogramme.

Code: Alles auswählen

hist(t)
zeichnet ein Histogramm. Das schönere Histogramm zeichnet:

Code: Alles auswählen

hist(t, breaks = seq(22.5, 28.5, 2))
Wenn Du in Wirklichkeit gar kein Histogramm haben möchtest, sondern ein Balkendiagramm gewünscht wird, dann empfehle ich aushilfsweise

Code: Alles auswählen

plot(table(t))
Zunehmen weiter verbreitet und beliebter dürfte das Grafiksystem Ggplot2 sein, bei dem man aber auch zwischen Balkengrafik und Histogramm unterscheiden muss:

Code: Alles auswählen

t = c(23, 23, 27, 25, 27)
df_test = data.frame(t)
barplot(table(df_test))

library(ggplot2)
ggplot(df_test, aes(x=t)) + geom_bar()


ggplot(df_test, aes(x=t)) + geom_histogram(bins = 4, fill = "grey", color ="black")
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

Edward
Beiträge: 3
Registriert: Di Sep 15, 2020 12:04 pm

Re: Histogramm mit gleichen Abstände auf x-Achse

Beitrag von Edward »

Hallo Bernhard,

danke für die schnelle Antwort. Mit ggplot2 hat funktioniert es soweit.

Eine Nachfrage habe ich noch: Den Vektor t habe ich nur für das Minimalbeispiel erzeugt. In meinem Fall habe ich nur das Data Frame. Wenn ich aes(x=df_test) schreibe, gibt es einen Fehler.

Code: Alles auswählen

Don't know how to automatically pick scale for object of type tbl_df/tbl/data.frame. Defaulting to continuous.
Fehler in is.finite(x) : 
  nicht implementierte Standardmethode für Typ 'list'
Gibt es dafür eine Lösung? Oder ist es einfacher, df_test zuerst umzuwandeln oder gar nicht erst mit Data Frames zu arbeiten?

Viele Grüße
Edward

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

Re: Histogramm mit gleichen Abstände auf x-Achse

Beitrag von EDi »

ggplot arbeitet NUR mit data.frames.

Code: Alles auswählen

ggplot(df_test, aes(x=t))
Das beschreibt, dass aus dem data.frame "df_test" die Spalte "t" auf die x-Achse abgetragen werden soll.
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: 1736
Registriert: Mi Okt 12, 2016 9:09 am

Re: Histogramm mit gleichen Abstände auf x-Achse

Beitrag von bigben »

Ja, da habe ich etwas unglücklich agiert, weil ich die base-Grafik-Beispiele auf dem Vektor, das ggplot_Beispiel aber auf dem DAtaframe aufgebaut habe.

In base ware das dann nicht

Code: Alles auswählen

hist(t)
sondern

Code: Alles auswählen

hist(df_test$t)
oder

Code: Alles auswählen

hist(df_test[["t"]])
Für ggplot2 hat EDi ja bereits geantwortet, dass ich dort keine Wahl hatte, welches t ich nehme, sondern das in einen data.frame verpackte nehmen musste.

Viel Erfolg,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

Edward
Beiträge: 3
Registriert: Di Sep 15, 2020 12:04 pm

Re: Histogramm mit gleichen Abstände auf x-Achse

Beitrag von Edward »

Vielen Dank! :)

Antworten