Seite 1 von 2

Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 3:52 pm
von Katti
Hallo,

ich schreibe aktuell an meiner Hausarbeit für mein Studium und muss einen datensatz mit Rstudio auswerten.

Ich komme aber an dieser Stelle einfach nicht weiter.

Ich möchte ein Histogramm für die Variable = Alter erstellen.Da das Merkmal kardinal-stetig ist, habe ich 7 Klassen gebildet (Das Alter geht von 17 bis 87). Ich möchte nun auf der x-Achse meine Klassengrenzen 17,27,37,47,57,67,77,87 im Histogramm als Beschriftung angezeigt bekommen.
Wenn ich z.B. den Befehl xlim=c(17,87) eingebe, wird die x-Achse nur in 10ner Schritten von 20 bis 80 beschriftet. Auch wenn ich 10 bis 100 eingebe, wechselt er in die 20er Schritte(also 20, 40, 60,...) Gibt es eine Möglichkeit, dass ich selber angeben kann, wie die Schritte sein sollen, die auf der x-Achse ausgegeben werden?

Vielen lieben Dank für eure Hilfe!

LG Katti

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 4:00 pm
von jogo
Hallo Katti,

willkommen im Forum!
Die Funktion cut() kann die Klassenzuordnung generieren. Kannst Du unst etwas von Deinen Daten zeigen, z.B. den output von

Code: Alles auswählen

str(DeinDataframe)
Gruß, Jörg

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 4:08 pm
von Katti
Hallo Jörg,
vielen Dank für deine schnelle Antwort. Ich habe mein Problem oben noch einmal versucht genauer zu beschreiben.

Hier ist der Befehl den ich verwende:

Code: Alles auswählen

pdf("Histogramm.pdf")                                               
hist(age,                                                            
     breaks=c(17,27,37,47,57,67,77,87),               
     freq = FALSE,                                                 
     right = TRUE,                                                  
     xlab=expression(x),                                        
     ylab=expression(hat(f(x))),                             
     ylim=c(0,0.02),                                              
     xlim=c(17,87),
     cex.lab=0.9,                                                  
     cex.axis=0.8,                                                
     main=""                                                         
)
dev.off() 
Anbei auch das Histogramm als pdf. Ich hätte gern auf der X-Achse die Klassengrenzen abgebildet.

Zuvor habe ich die Klassen mit dem Befehl cut(age,c(17,27,37,47,57,67,77,87),include.lowest=FALSE) gebildet

Besten Dank für deine Hilfe!

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 4:24 pm
von jogo
Hallo Katti,

wahrscheinlich kann man das mit

Code: Alles auswählen

hist(..., axis=FALSE)
axis(...)
lösen. Leider bin ich nicht der Grafikkünstler hier im Forum.
Deine Frage wäre besser im Bereich Grafik aufgehoben. Ich werde die Frage in den Bereich verschieben.

Gruß, Jörg

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 4:25 pm
von bigben
Ich denke, so ist es gemeint:

Code: Alles auswählen

age <- sample(17:87, 100, replace=TRUE)

breaks <- c(17,27,37,47,57,67,77,87)
hist(age, breaks=breaks, xaxt="n", col="grey", main="")
axis(1, at=breaks)
LG,
Bernhard

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 4:32 pm
von bigben
...aber wenn ich ehrlich bin, gefällt mir die ggplot2-Variante fast besser:

Code: Alles auswählen

DF <- data.frame(sample(17:87, 100, replace=TRUE))
breaks <- c(17,27,37,47,57,67,77,87)
library(ggplot2)
fig1 <- ggplot(DF) + 
  geom_histogram(aes(x=age), breaks = breaks, col="black", fill="grey") +
  scale_x_continuous(breaks=breaks) +
  xlab("Alter")
print(fig1)
LG,
Bernhard
Rplot.png
Rplot.png (5.53 KiB) 1681 mal betrachtet

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 5:24 pm
von Katti
Hallo Bernhard,

vielen lieben Dank!

Die x-Achse sieht jetzt genauso aus wie ich sie haben will, aber die y-Achse leider nicht mehr und die Balken stimmen irgendwie auch nicht.

Die y-Achse sollte bis 0.020 gehen.

Ich habe zuvor die absolute und die relative Häufigkeit bestimmt mit folgenden Befehlen und Ergebnissen:

Code: Alles auswählen

table(cut(age,c(17,27,37,47,57,67,77,87),include.lowest=FALSE))

(17,27] (27,37] (37,47] (47,57] (57,67] (67,77] (77,87] 
    191     249     297     321     289     346     296 
> table(cut(age,c(17,27,37,47,57,67,77,87),include.lowest=FALSE))/length(cut(age,c(17,27,37,47,57,67,77,87),include.lowest=FALSE))

(17,27] (27,37] (37,47] (47,57] (57,67] (67,77] (77,87] 
 0.0955  0.1245  0.1485  0.1605  0.1445  0.1730  0.1480 
> cumsum(table(cut(age,c(17,27,37,47,57,67,77,87),include.lowest=FALSE))/length(cut(age,c(17,27,37,47,57,67,77,87),include.lowest=FALSE)))
Auf der y-Achse sollte die Dichte stehen. Also als Bsp. für die erste Klasse (17,27] müsste der Balken dort bis 0,00955 gehen (da 0,0955:10= 0,00955, weil 0,0955 die relative Häufigkeit (cumsum-Befehl) von dieser Klasse ist und 27-17 = 10)

Kannst du mir da vielleicht nochmal weiterhelfen?

Besten Dank!

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 5:27 pm
von Katti
Achso vielleicht sollte ich noch erwähnen, dass ich diesen Code von dir genutzt habe:

Code: Alles auswählen

age <- sample(17:87, 100, replace=TRUE)

breaks <- c(17,27,37,47,57,67,77,87)
hist(age, breaks=breaks, xaxt="n", col="grey", main="")
axis(1, at=breaks)
Und falls es relevant ist, n=2000 (also Anzahl der Zeilen/betrachteten Personen)

Lieben DANK!

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 6:50 pm
von Athomas
Mit ein paar unbedeutenden Modifikationen an bigbens Code :D :

Code: Alles auswählen

DF <- data.frame(age=sample(17:87, 100, replace=TRUE))
breaks <- c(17,27,37,47,57,67,77,87)
library(ggplot2)
fig1 <- ggplot(DF) + 
  theme_bw() +
  geom_histogram(aes(x=age, y=..density..), breaks = breaks, col="black", fill="darkslategray1", alpha=0.3) +
  scale_x_continuous(breaks=breaks) +
  xlab("Alter")
print(fig1)

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Verfasst: Fr Feb 21, 2020 7:00 pm
von Katti
Besten Dank!

Aber nochmal eine doofe Frage:

Wo trage ich denn in dem Code meinen Datensatz ein? (Denn meine Balken stimmen leider immer noch nicht)

Muss ich ggplot durch den Namen meines Datensatzes ersetzen?

Und wäre es zudem möglich, dass die Skala auf der y-Achse bis einschließlich 0.020 geht?

Ganz ganz lieben Dank euch!!!!