wenn, dann

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
Lorelotte
Beiträge: 4
Registriert: Sa Feb 24, 2024 2:33 pm

wenn, dann

Beitrag von Lorelotte »

Hey ihr Lieben,

ich erstelle einen Scatterplot, der folgendermaßen aussieht
Bild

nun möchte ich jede Zeile anders darstellen. Meine Variablen: x =Tage, y=wb

Mit dem Befehl "plot(daten$Tage, daten$wb,pch=11)" bekomme ich unterschiedliche Darstellungen je nachdem, welche Ziffer ich bei pch einsetze

Nun möchte ich dem Programm sagen: wenn wb=1, dann pch=5
wenn wb=2, dann pch=8
wenn wb=3, dann pch=10 usw.

Und genau an diesem Punkt komme ich nicht weiter.
Hat jemand eine Idee? Ich wäre so unendlich dankbar!!!!
bigben
Beiträge: 2776
Registriert: Mi Okt 12, 2016 9:09 am

Re: wenn, dann

Beitrag von bigben »

Hallo Lorelotte,

Deine Beispielgrafik ist mit dem ggplot2 Grafiksystem gemacht, das von Dir genannte plot Kommando gehört aber In ein anderes Grafiksystem. In beiden lässt sich Deine Aufgabe lösen, aber vielleicht schreibst Du uns, welches Du verwenden möchtest?

LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Lorelotte
Beiträge: 4
Registriert: Sa Feb 24, 2024 2:33 pm

Re: wenn, dann

Beitrag von Lorelotte »

Hey bigben,

VIELEN Dank für deine Antwort :D Ich pack dir hier mal meinen Code rein. Kann sein, dass ich zwei Pakete komplett falsch zusammenhaue, meine R-Kenntnisse sind noch rudimentär ^^ Wie müsste der Code sein?
Allerliebste Grüße


#Daten aus file einlesen
library(readxl)
daten<-read_excel("..../minus.xlsx")

plot(daten$Tage,daten$wb)+
#Grafik mit benutzerdefinierten Achsenskalierung erstellen
plot(daten$Tage, daten$wb,pch=16)

library(ggplot2)
#Erstellen eines Streudiagramms mit benutzerdefinierten Achsen
ggplot(data=daten, aes(x=Tage, y=wb)) +
geom_point() +
xlim(-100, 0) +
ylim(0, 88)+

#Pfeil
geom_segment(aes(x=-100,y=0.0,xend=0,yend=0.0), arrow=arrow(type="closed",length=unit(0.2,"inches")),color="black")
bigben
Beiträge: 2776
Registriert: Mi Okt 12, 2016 9:09 am

Re: wenn, dann

Beitrag von bigben »

Hallo Lorelotte,

ich befürchte, dass Du Dich auf einen falschen Pfad begibst, um R zu lernen. Durch das Abtippen von Beispielen aus dem Netz und das Zusammensuchen auf Google lernt man R nicht. Ein passendes Beispiel finden und einfach anpassen funktioniert nur, wenn die eigenen Grafik nicht zu ausgefallen sein soll. Du wirst ein Buch lesen oder einen Kurs durcharbeiten müssen.

Eine Antwort auf Deine Frage oben für den Fall, dass Du mit ggplot2 arbeiten wirst kann so aussehen, aber auch daraus lernst Du nur, wenn Du Dich mit ggplot2 grundsätzlich beschäftigst.

Code: Alles auswählen

# Beispieldaten 
d <- data.frame(x = sample.int(32, 50, 1)+18L, 
                y = sample.int(5, 50, 1))

library(ggplot2)
ggplot(d) +
  geom_jitter(aes(x = x, y = y, shape = factor(y)), 
              height = .1, width = 0, fill = "blue") +
  scale_shape_manual(values = c(25, 6, 11, 2, 24),
                     name = "Zufriedenheit") +
  xlab("Alter") +
  ylab("Zufriedenheit") +
  theme_minimal()
https://www.statology.org/ggplot-point-shape/

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Lorelotte
Beiträge: 4
Registriert: Sa Feb 24, 2024 2:33 pm

Re: wenn, dann

Beitrag von Lorelotte »

Liebster Bernhard,
hab tausend Dank für deine Nachricht. Entschuldige die späte Antwort, hier gab es ein Schicksalsereignis, weswegen ich hier einige Tage nicht reingeschaut habe.

Zu deiner Anmerkung: Du hast absolut Recht, so würde ich R ziemlich sicher nicht lernen können. Jedoch wenn ich ehrlich bin, möchte ich wirklich nur diese eine Abbildung bauen und das Programm gar nicht tiefer lernen. Es ist für mein letztes Paper der Dissertation und da die Abbildung recht komplex ist, wussten wir nicht, welch anderes Programm überhaupt in der Lage ist, eine solche Abb zu generieren.
Mit deiner Hilfe habe ich es jetzt tatsächlich geschafft und ich bin mega happy. Hab EXTREMEN Dank!!!!!
Meine Abbildung hat 8 Parameter (1 Parameter pro Zeile), die sich 11 mal (da 11 Fälle) wiederholen. Das heißt, ich habe 88 Zeilen. Gigantisches Ding, aber tatsächlich geht es.

So klappt es : 😊

Code: Alles auswählen

library(readxl)
d<-read_excel("file.xlsx")
library(ggplot2)
ggplot(d) +
  geom_jitter(aes(Tage, WB, shape = factor(WB)), 
              height = .2, width = 0, fill = "black") +
  scale_shape_manual(values = c(1,21,0,2,3,6,13,8,1,21,0,2,3,6,13,8,1,21,0,2,3,6,13,8,1,21,0,2,3,6,13,8,1,21,0,2,3,6,13,8,1,21,0,2,3,6,3,1,21,2,3,13,8,1,21,0,2,3,6,13,8,1,21,0,2,3,6,13,8,1,21,0,2,3,6,13,8,1,21,2,3,6,13,8))+  
  xlab("time") +
  ylab("WB")
theme_minimal()
Ich kam nun noch auf die Bonus-Idee, dass man die Symbole ja bunt einfärben könnte, also dass jedes der 8 Symbole eine andere Farbe hat und diese sich dann auch über die 11 Fälle wiederholen.
Ich hab den scale_colour_manual Befehl analog angewandt und fill=black beom geom_jitter Befehl entfernt, funktioniert leider aber nicht..

Für ein Fall sieht mein Code so aus:

Code: Alles auswählen

library(ggplot2)
ggplot(d) +
  geom_jitter(aes(Tage, WB, shape = factor(WB)), 
              height = .1, width = 0) +
  scale_shape_manual(values = c(1,21,0,2,3,6,13,8))+
  scale_colour_manual(values = c("red","blue", "green","red","blue","green", "yellow","red"))+
  xlab("time") +
  ylab("WarningBehavior")
theme_minimal()
Vielleicht könntest du mir hier noch einen Hinweis geben? Das wäre GRENZGENIAL!!!
Antworten