Seite 1 von 1

Histogramm mit gleichen Abstände auf x-Achse

Verfasst: Di Sep 15, 2020 12:30 pm
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

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

Verfasst: Di Sep 15, 2020 12:59 pm
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

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

Verfasst: Di Sep 15, 2020 2:07 pm
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

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

Verfasst: Di Sep 15, 2020 2:54 pm
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.

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

Verfasst: Di Sep 15, 2020 3:44 pm
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

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

Verfasst: Mi Sep 16, 2020 11:03 am
von Edward
Vielen Dank! :)