Werte der y-Achse und Farbe der Säulen

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

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

Werte der y-Achse und Farbe der Säulen

Beitrag von Lorelotte »

Hey ihr Lieben, ich bin eine absolute R-Anfängerin und verzweifle leider an einer Abbildung.
Ich habe 8 Konstrukte, deren Häufigkeit (often, on occasion, rare) ich in einem Säulendiagramm darstellen möchte. Ich habe es geschafft, den Konstrukten, die Zahlenwerte zuzuordnen, möchte diese Stufen aber mit den o.g. Begriffen benennen. Wahrscheinlich muss ich den Konstrukten die Werte zuordnen und dann einen Befehl hinzufügen, dass ich die Zahlenwerte umbenennen möchte. Leider bekomme ich genau diesen Schritt nicht hin. Wenn ich in dem jetzigen Code die Zahlen entferne, drehen sich die Häufigkeiten leider um (ich glaub R sortiert die Begriffe alphabetisch).

2. Punkt: Ich möchte die ersten 3 Säulen in einer Farbe, die letzten 5 Säulen in einer anderen Farbe. Ich schaffe leider nur, dass alle Säulen in einer Farbe sind, bekomme das separiert nicht hin.

worauf ich stolz bin: ich habe die Pfeilspitze an der x-Achse geschafft yeeeeaaahhh.

Ich wäre euch zutiefst verbunden, wenn mir jemand helfen könnte :)

DatenAbb<-data.frame(Behaviors=c("K1", "K2", "K3", "K4", "K5", "K6","K7","K8"), frequencies=c("3often","3often","1rare","2on occasion","2on occasion","1rare","2on occasion","1rare"))
head (DatenAbb)
library(ggplot2)
DatenAbb$Behaviors = factor(DatenAbb$Behaviors, levels = c(K1", "K2", "K3", "K4", "K5", "K6","K7","K8"))
p<-ggplot(data=DatenAbb, aes(x=Behaviors, y=frequencies))+
geom_bar(stat="identity")+
xlab("time")+
theme_classic()+
geom_segment(aes(x=1,y=0.0,xend=9,yend=0.0), arrow=arrow(type="closed",length=unit(0.2,"inches")),color="black")+
theme(text=element_text(size=10))
p

Bild
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Werte der y-Achse und Farbe der Säulen

Beitrag von bigben »

Hallo Lorelotte,

willkommen und zum Gruß erstmal ein großes Lob für die Präsentation mit reproduzierbarem Minimalbeispiel. Super.

Dafür gibt es auch gleich eine brauchbare Antwort:
Die Reihenfolge an den Achsen ist in ggplot2 tatsächlich alphabetisch. Alternativ kann man einen sog. ordered factor in R erstellen. Das entspricht statistisch dem ordinalen Skalenniveau. Sonst wird dieses Feature in R weniger verwendet, als es verdient hätte.

Für das Einfärben: Markiere in den Daten, welche Säulen welche Farbe bekommen sollen und stelle die dann in einer manuellen Palette ein:

Code: Alles auswählen

DatenAbb <- data.frame(Behaviors = c("K1", "K2", "K3", "K4", "K5", "K6","K7","K8"),
                       frequencies = c("often","often","rare",
                                     "on occasion","on occasion","rare",
                                     "on occasion","rare"))
DatenAbb$freq <- ordered(DatenAbb$frequencies, 
                         levels = c("rare", "on occasion", "often"))
DatenAbb$color <- ifelse(DatenAbb$Behaviors %in% c("K1", "K2", "K3"), 
                         yes = "earlier", no = "later") 
head (DatenAbb)
library(ggplot2)

p <- ggplot(data = DatenAbb, aes(x = Behaviors, y = freq, 
                                 fill = color)) +
     geom_bar(stat="identity", width = .3) +
     theme(text=element_text(size=10)) +
     scale_fill_manual(values = list(earlier = "deeppink",
                                later = "deepskyblue"))
print(p)

Der Pfeil an der x-Achse war viel Arbeit. Aber bist Du sicher, dass Du ihn wirklich haben willst?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Werte der y-Achse und Farbe der Säulen

Beitrag von Athomas »

Die Reihenfolge an den Achsen ist in ggplot2 tatsächlich alphabetisch. Alternativ kann man einen sog. ordered factor in R erstellen. Das entspricht statistisch dem ordinalen Skalenniveau. Sonst wird dieses Feature in R weniger verwendet, als es verdient hätte
Dazu eine Anmerkung: es bedarf lustigerweise keines "ordered factors", um in R einen nach Gusto geordneten Faktor zu erzeugen - es reicht die explizite Aufzählung der Wunschreihenfolge bei der Deklaration!
Ein "ordered factor" geht weiter, ich zitiere unseren Freund Hadley W. (https://r4ds.hadley.nz/factors.html):
Ordered factors, created with ordered(), imply a strict ordering and equal distance between levels: the first level is “less than” the second level by the same amount that the second level is “less than” the third level, and so on.
"ordered factors" erzeugen bei Verwendung in (verallgemeinerten) linearen Modellen häufig große Verwirrung (nicht nur :D ) bei mathematisch etwas wackeligen Anwendern, weil sie die Verwendung von Orthogonalpolynomen anstoßen - Hadley sagt dazu:
If you use an ordered function (er meint: factor) in a linear model, it will use “polygonal contrasts”. These are mildly useful, but you are unlikely to have heard of them unless you have a PhD in Statistics, and even then you probably don’t routinely interpret them.
Ich möchte mich seinem abschließenden Urteil
Given the arguable utility of these differences, we don’t generally recommend using ordered factors.
anschließen - "ordered factors" bitte nur dann verwenden, wenn man die über die Ordnung hinausgehenden Features versteht und benötigt!
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Werte der y-Achse und Farbe der Säulen

Beitrag von bigben »

Oha,
da habe ich in diesem Thread richtig was gelernt.
Vielen Dank, Athomas!
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Werte der y-Achse und Farbe der Säulen

Beitrag von Athomas »

Ich habe auch nicht schlecht gestaunt :o , als ich das vor nicht allzu langer Zeit bei einer intensiveren Beschäftigung mit dem Thema "factor" festgestellt habe.

Die Namensgebung suggeriert halt etwas anderes - so ähnlich wie bei der von uns in der vor-data.table-Zeit sehr geschätzten und gerne verwendeten ave()-Funktion :D !
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Werte der y-Achse und Farbe der Säulen

Beitrag von bigben »

Hallo Athomas,

ich erinnere mich an eine gewisse Vorliebe Deinerseits, alle Fragen die im alten Forum gestellt wurden mit ave zu beantworten, aber die Parallele zu Faktoren habe ich noch nicht verstanden. Meinst Du, dass man auf die wichtigsten Elemente von R eher per Zufall stößt?

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