Optimierung von Grafiken

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
ben87
Beiträge: 3
Registriert: Mi Mär 20, 2019 10:00 am

Optimierung von Grafiken

Beitrag von ben87 »

Moin

ich hab schon die letzten Tage versucht mich selber durch google und youtube zu kämpfen werde aber nicht fündig. Ich hoffe ihr könnt mir helfen.

Ich habe zwei Grafiken erstellen einmal mit gf_bar und boxplot. Bei beiden Grafiken handelt es sich um Auswertungen nach dem Geschlecht jedoch ist das Geschlecht in meiner Datenquelle in 0 und 1 kodiert und endsprechend auch in meinen Grafiken drin.
Daher meine Frage wie bekomme ich die 0 und 1 auf meiner x-Achse zu weiblich und männlich?

Zweites Problem. Ich habe ein Streudiagramm mit gf_point erzeugt und die Achsen entsprechend bezeichnet alles wunderbar. Wenn ich aber eine Regressionsgerade erstelle und diese mit plotmodel einfüge in die Grafik haut er mir die Beschriftung weg.
Wie bekomme ich die wieder rein?

Ich danke schonmal für die Hilfe.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Optimierung von Grafiken

Beitrag von jogo »

Hallo Ben,

willkommen im Forum!
ben87 hat geschrieben: Mi Mär 20, 2019 10:12 am Ich habe zwei Grafiken erstellen einmal mit gf_bar und boxplot. Bei beiden Grafiken handelt es sich um Auswertungen nach dem Geschlecht jedoch ist das Geschlecht in meiner Datenquelle in 0 und 1 kodiert und endsprechend auch in meinen Grafiken drin.
Daher meine Frage wie bekomme ich die 0 und 1 auf meiner x-Achse zu weiblich und männlich?
Normalerweise reicht es aus, dass die entsprechende Variable ein factor ist. Ohne Ansicht der Daten oder wenigstens der Struktur der Daten können wir das nicht beurteilen.

Zweites Problem. Ich habe ein Streudiagramm mit gf_point erzeugt und die Achsen entsprechend bezeichnet alles wunderbar. Wenn ich aber eine Regressionsgerade erstelle und diese mit plotmodel einfüge in die Grafik haut er mir die Beschriftung weg.
Wie bekomme ich die wieder rein?
Auch hierzu fehlt ein reproduzierbares Beispiel, siehe viewtopic.php?f=20&t=11
Im Standardgrafiksystem verwendet man abline(...)

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Optimierung von Grafiken

Beitrag von bigben »

Ein reproduzierbares Beispiel und ein Lösungsvorschlag könnten so aussehen:

Code: Alles auswählen

datensatz <- data.frame(gender = sample(0:1, 30, replace = TRUE),
                        value = rbeta(30,2,8))

datensatz$gender.factor <- as.factor(ifelse(datensatz$gender==0, yes="Männer", no="Frauen"))

boxplot(datensatz$value ~ datensatz$gender.factor)
@jogo Falls es sich bei diesem gf_plot um eine Funktion aus dem package statisticalModeling handeln sollte, dann ist das lt. Beschreibung nicht Standardgrafik sondern ggplot2. plotModel gibt es im package mosaic. Da kommt dann lattice oder ggplot2 raus, aber auch keine Standardgrafik.

ad Ben87: In Standardgrafik könnte man das mit abline so machen:

Code: Alles auswählen

datensatz <- data.frame(gender = sample(0:1, 30, replace = TRUE),
                        value = rbeta(30,2,8),
                        othervalue = rnorm(30))

model <- lm(value ~ othervalue, data = datensatz)
plot(value ~ othervalue, data = datensatz, col = gender+1, pch=16)
abline(model)
Beide Code-Blöcke von mir kannst Du einfach per Copy&Paste in Deine R-Sitzung kopieren und sofort sehen, was passiert. Wäre cool, wenn Du uns vergleichbare Code-Blöcke (lauffähige Minimalbeispiele) liefern könntest.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
ben87
Beiträge: 3
Registriert: Mi Mär 20, 2019 10:00 am

Re: Optimierung von Grafiken

Beitrag von ben87 »

ich hab das Paket mosaic genutzt und folgende Funktionen

Hier gab es einen Umfragebogen bei dem die Teilnehmer Weiblich / Männlich ankreuzen konnten. In der csv werden die Anworten mit 0 und 1 kodiert
Für die Problematik mit den Zahlen konvertieren habe ich folgende Funktionen genutzt:
gf_bar(~q_004.1, data = Gesundheitsreport, xlab="Geschlecht", ylab="Anzahl") ### Ziel: Wieviel Männer / Frauen haben an der Umfrage teilgenommen boxplot(q_001.2~ q_004.1, data=Gesundheitsreport, notch=TRUE, xlab="Geschlecht", ylab="Sportstunden / Woche") ### Ziel: Die Anzahl der Sportstunden nach Geschlecht zu analysieren


Für das Streudiagramm hatten die Teilnehmer bei beiden Feldern die Möglichkeit absolute Zahlen einzusetzen.
gf_point(q_001.2~q_004.2, data=Gesundheitsreport, xlab="Alter", ylab="Sportstunden / Woche")

Lineare Funktion des Streudiagramms
> KG.1 <- lm(q_001.2~q_004.2, data=Gesundheitsreport)

und für das einfügen in die Grafik
> plotModel(KG.1)

Ziel hier zu schauen ob ein Zusammenhang zwischen Alter und Sport besteht
Dateianhänge
boxplot.png
boxplot.png (7.76 KiB) 935 mal betrachtet
plotmodel.png
plotmodel.png (11.08 KiB) 935 mal betrachtet
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Optimierung von Grafiken

Beitrag von bigben »

Und was ist jetzt die Frage?

Wie man die Zahlenspalte mit 0 und 1 in eine factor-spalte mit Beschriftung ("Mann"/"Frau") umwandelt, um eine Geschlechterbeschriftung in boxplot zu bekommen ist doch oben beantwortet.

Die zweite Abbildung ist eine gute Demo, wie man es nicht macht, weil man nie weiß, wieviele Punkte da übereinander liegen. Aber wenn Dir das so gefällt, dann gerne. Ich kenne diese Grafikfunktionen in mosaic nicht, aber versuch mal folgenden Schuss ins Blaue:

Code: Alles auswählen

plotModel(KG.1) + xlab("Alter") + ylab("Sport: Wochenstunden")
Hilft das?

Ansonsten versuch mal

Code: Alles auswählen

library(ggplot2)
ggplot(Gesundheitsreport, aes(x = q_004.2, y = q_001.2)) + geom_count() + xlab("Alter") + geom_smooth(method='lm')
Wie gefällt Dir das?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
ben87
Beiträge: 3
Registriert: Mi Mär 20, 2019 10:00 am

Re: Optimierung von Grafiken

Beitrag von ben87 »

danke probiere ich heute Abend gleich mal aus.
bigben hat geschrieben: Mi Mär 20, 2019 1:34 pmDie zweite Abbildung ist eine gute Demo, wie man es nicht macht, weil man nie weiß, wieviele Punkte da übereinander liegen.
Ich bin ein absoluter Anfänger und habe beruflich nichts mit Datenanalyse zu tun, ich muss das gerade für die Uni machen.
Welche Funktion würdest du denn empfehlen?
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Optimierung von Grafiken

Beitrag von bigben »

Hallo ben87,
Welche Funktion würdest du denn empfehlen?
Ich weiß nicht, welche Vorgaben Dir von der Uni gemacht wurden. Zunächst einmal würde ich mich entscheiden, die Grafiken einheitlich entweder im Standardgrafiksystem oder in ggplot2 zu machen. Die haben eine sehr unterschiedliche Ästhetik und Du siehst ja, dass Dein Boxplot und Deine Punktwolke optisch nicht wirklich zueinander passen wollen. Beide Systeme können Boxplots und beide können Punktwolken mit Regressionsgeraden. Ich habe Dir einen noch nicht ganz fertigen Vorschlag für eine Alternative gepostet. Dabei sind die Punkte je nach Häufigkeit größer oder kleiner. Dazu hatte ich die Frage gestellt, wie Dir diese Alternative gefällt. Schwer was zu raten wenn wir nicht wissen, was Du haben willst.

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