Bezeichnung und Anzahl der Beschriftung an der x Achse

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Katti
Beiträge: 15
Registriert: Fr Feb 21, 2020 3:42 pm

Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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
Zuletzt geändert von Katti am Fr Feb 21, 2020 4:01 pm, insgesamt 1-mal geändert.
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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
Katti
Beiträge: 15
Registriert: Fr Feb 21, 2020 3:42 pm

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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!
Dateianhänge
so sieht es aktuell aus
so sieht es aktuell aus
Zuletzt geändert von jogo am Fr Feb 21, 2020 4:14 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert. http://forum.r-statistik.de/viewtopic.php?f=20&t=29
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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) 503 mal betrachtet
Dateianhänge
Rplot01.png
Rplot01.png (4.75 KiB) 503 mal betrachtet
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Katti
Beiträge: 15
Registriert: Fr Feb 21, 2020 3:42 pm

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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!
Zuletzt geändert von jogo am Fr Feb 21, 2020 7:44 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert, siehe http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Katti
Beiträge: 15
Registriert: Fr Feb 21, 2020 3:42 pm

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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!
Zuletzt geändert von jogo am Fr Feb 21, 2020 7:44 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert, siehe http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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)
Katti
Beiträge: 15
Registriert: Fr Feb 21, 2020 3:42 pm

Re: Bezeichnung und Anzahl der Beschriftung an der x Achse

Beitrag 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!!!!
Antworten