Grafik zur Darstellung von Polaritäten

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
Thy
Beiträge: 7
Registriert: So Apr 11, 2021 5:35 pm

Grafik zur Darstellung von Polaritäten

Beitrag von Thy »

Hallo ihr Lieben,

ich möchte gern Polaritäten in R in einer hübschen Grafik darstellen.
Ausgangslage waren 4 Fragen, bei denen man angeben sollte, ob man sich eher zu der Option auf der rechten Seite oder zu der auf der linken Seite hingezogen fühlt. Es gab die Abstufungen 1 - 4 (1 für die Option ganz links, 4 für die Option ganz rechts und entsprechend 2 und 3 dazwischen). Beispiel: sind Sie eher introvertiert oder eher extrovertiert. Antwort: 4 (entspricht "total extrovertiert") - im folgenden "Pol" für Polarität genannt.
Die Personen wurden dann noch in drei Gruppen eingeteilt, die wir hier mal exemplarisch als A, B und C bezeichnen.
Die Daten sehen also so aus:
Fall - Gruppe - Pol
1 - B - 2
2 - C - 4
3 - A - 1
4 - A - 3
usw.

Ich hätte nun gern eine schöne Darstellung aus R, die in etwa so aussieht, wie die angehängte Datei.
Es sollen die jeweiligen Polaritäten dargestellt werden, sowie die Mittelwerte der Gesamtstichprobe und die Mittelwerte für jede der drei Gruppen.

Funktioniert das irgendwie?

Vielen Dank!
Dateianhänge
Polaritäten.JPG
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Grafik zur Darstellung von Polaritäten

Beitrag von bigben »

Hallo Thy,

herzlich willkommen im Forum. Schau Dir bitte mal diesen älteren Thread und meine beiden Code-Beispiele in dem Thread an. Geht das in die richtige Richtung? Wenn ja, was fehlt, wenn nein, warum? Link: viewtopic.php?f=9&t=1363

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Grafik zur Darstellung von Polaritäten

Beitrag von student »

Hallo Thy,

ich bin mal über folgendes gestolpert:

a: https://bookdown.org/Rmadillo/likert/al ... alize.html

b: http://rcrastinate.blogspot.com/2016/07 ... sults.html

oder c schlicht das Likert-Paket:
likert: Analysis and Visualization Likert Items
An approach to analyzing Likert response items, with an emphasis on visualizations. The stacked bar plot is the preferred method for presenting Likert results. Tabular results are also implemented along with density plots to assist researchers in determining whether Likert responses can be used quantitatively instead of qualitatively. See the likert(), summary.likert(), and plot.likert() functions to get started.
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Thy
Beiträge: 7
Registriert: So Apr 11, 2021 5:35 pm

Re: Grafik zur Darstellung von Polaritäten

Beitrag von Thy »

bigben hat geschrieben: So Apr 18, 2021 1:24 pm viewtopic.php?f=9&t=1363
Vielen Dank, das geht auf jeden Fall in die richtige Richtung, wobei ich da als Quintessenz verstanden habe, dass es eher mit den Basismitteln funktioniert und nicht mit ggplot, was ich mir gewünscht hätte.
Mit dem ersten Antwortpost von dir habe ich mich ein bisschen versucht und nun sieht es mit meinen Daten so aus:
Rplot02.png
Rplot02.png (3.93 KiB) 1868 mal betrachtet
Die Eingabe war wie folgt:

Code: Alles auswählen

 
 
links <- c("Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ", "Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ", "Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ", "Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ")
rechts <- c("Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ", "Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ", "Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ", "Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx Xxxxxxxxxx ")
Gesamt <- c(2.52, 2.93, 1.49, 2.79)
plot(Gesamt, 1:length(item), xlim=c(1,4), col="darkred", cex=2, pch=16, 
     xaxt="n", yaxt="n",
     xlab="", ylab="")
axis(side=1, at=1:4)
axis(side=2, at=1:length(links), labels=links, las=1)
axis(side=4, at=1:length(rechts), labels=rechts, las=1)
abline(h=1:length(links), lty=3, col="grey")
abline(v=1:4, lty=3, col="grey")

oEkl <- c(2.67, 3.28, 1.64, 2.69)
points(oEkl, 1:length(item), col="darkcyan", cex=1, pch=16)

mEkl <- c(2.5, 2.89, 1.48, 2.81)
points(mEkl, 1:length(item), col="gray44", cex=1, pch=16)

uEkl <- c(2.46, 2.71, 1.36, 2.79)
points(uEkl, 1:length(item), col="aquamarine3", cex=1, pch=16)
Meine Texte, die ich eigentlich gern einfügen würde, sind jeweils etwa 100 Zeichen lang - ich habe es hier durch viele XXX ersetzt. Leider laufen sie gnadenlos aus der Grafik heraus. Bekomme ich da einen Zeilenumbruch rein? Alternativ muss ich es auf ein Wort einkürzen und im Text erklären.

Kannst du mir dazu nochmal weiterhelfen?
Vielen Dank!
Zuletzt geändert von Thy am Sa Apr 24, 2021 6:13 pm, insgesamt 4-mal geändert.
Thy
Beiträge: 7
Registriert: So Apr 11, 2021 5:35 pm

Re: Grafik zur Darstellung von Polaritäten

Beitrag von Thy »


Das trifft es leider nicht so ganz. Trotzdem lieben Dank!
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Grafik zur Darstellung von Polaritäten

Beitrag von bigben »

Schnellantwort: Warum hast Du den par Teil aus meinem Code weggelassen? Nimm den mal an den Anfang Deines Codes und ersetze die 6 durch eine etwas größere Zahl.
LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Grafik zur Darstellung von Polaritäten

Beitrag von bigben »

Ich wollte gerade eine längere Antwort verfassen, aber Dein Code-Beispiel oben ist kein reproduzierbares:

Code: Alles auswählen

> plot(Gesamt, 1:length(item), xlim=c(1,4), col="darkred", cex=2, pch=16, 
+      xaxt="n", yaxt="n",
+      xlab="", ylab="")
Fehler in xy.coords(x, y, xlabel, ylabel, log) : 
  Objekt 'item' nicht gefunden
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Grafik zur Darstellung von Polaritäten

Beitrag von bigben »

So, jetzt doch noch ne längere Antwort. Ich bin zwar immer noch nicht die hellste ggplot2-Leuchte im Forum, aber so in etwa könnte man das anfangen:

Code: Alles auswählen

beschriftung <- data.frame(
                    zeile = 1:5,
                    links = c("Alpha", "Bravo", "Charly", "Delta", "Echo\n(two lines)"),
                    rechts= c("Anton", "Bertha", "Caesar", "Dora", "Emil\nzweizeilig"))
werte <- data.frame(zeile = as.integer(gl(5,3)),
                    wert = runif(15, min = 1, max = 7),
                    farbe = factor(rep(1:3, 5)))

library(ggplot2)
ggplot(beschriftung) + 
  geom_text(aes(x = 0, y = 6-zeile, label = links), hjust = "right") +
  geom_text(aes(x = 8, y = 6-zeile, label = rechts), hjust = "left") +
  scale_x_continuous(name = "Itemvalue", limits = c(-4,12),
                     breaks = 1:7, minor_breaks = NULL) +
  scale_y_continuous(name = "", breaks = NULL) +
  geom_segment(aes(x = 1, xend = 7, y = 1:5, yend = 1:5), color = "lightgrey",
               lwd = 2) +
  geom_point(data = werte, mapping = 
                aes(x = wert, y = 6-zeile, color = farbe), size = 5, alpha = .5) +
  theme_bw()
Rplot01.png
Rplot01.png (5.97 KiB) 1859 mal betrachtet
Ist halt keine universelle Lösung, sondern müsste im Einzelfall angepasst werden. Bei Deinen langen Beschriftungen vor allem natürlich die limits in scale_x_continuous.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Thy
Beiträge: 7
Registriert: So Apr 11, 2021 5:35 pm

Re: Grafik zur Darstellung von Polaritäten

Beitrag von Thy »

bigben hat geschrieben: Sa Apr 24, 2021 6:30 pm Schnellantwort: Warum hast Du den par Teil aus meinem Code weggelassen? Nimm den mal an den Anfang Deines Codes und ersetze die 6 durch eine etwas größere Zahl.
LG, Bernhard
Was ist der "par Teil"? In meinem Code ist nirgends eine 6, weiß daher nicht, was ich ersetzen soll... Sorry, dass ich da so schwer von Begriff bin
Thy
Beiträge: 7
Registriert: So Apr 11, 2021 5:35 pm

Re: Grafik zur Darstellung von Polaritäten

Beitrag von Thy »

bigben hat geschrieben: Sa Apr 24, 2021 10:41 pm
Ist halt keine universelle Lösung, sondern müsste im Einzelfall angepasst werden. Bei Deinen langen Beschriftungen vor allem natürlich die limits in scale_x_continuous.

LG,
Bernhard
Vielen Dank, das find ich schon mal gut.
Ich habe etwas rumprobiert, hänge aber noch an ein paar Stellen.

Das ist meine angepasste Eingabe:

Code: Alles auswählen

beschriftung <- data.frame(
        zeile = 1:4,
        links = c("Individuelle Angebote für \nEinzelpersonen/\nPersonengruppen", "Bravo", "Charly", "Delta"),
        rechts= c("Alle Mitarbeiter erhalten \nidentische Benefits", "Bertha", "Caesar", "Dora"))
werte <- data.frame(zeile = as.integer(gl(5,3)),
                    wert = runif(15, min = 1, max = 4),
                    farbe = factor(rep(1:3, 5)))

ggplot(beschriftung) + 
        geom_text(aes(x = 0, y = 5-zeile, label = links), hjust = "right") +
        geom_text(aes(x = 6, y = 5-zeile, label = rechts), hjust = "left") +
        scale_x_continuous(name = "Polaritäten", limits = c(-5,11),
                           breaks = 1:5, minor_breaks = NULL) +
        scale_y_continuous(name = "", breaks = NULL) +
        geom_segment(aes(x = 1, xend = 5, y = 1:4, yend = 1:4), color = "lightgrey",
                     lwd = 1) +
        geom_point(data = werte, mapping = 
                           aes(x = wert, y = 6-zeile, color = farbe), size = 4, alpha = .5) +
theme(panel.background = element_rect(fill = "transparent", colour = NA),
      panel.grid.major = element_line(colour="gray88"), legend.position = "bottom", 
      axis.title.x = element_text(face="bold", size=13, margin = margin(t = 20, r = 0, b = 0, l = 0)),
      axis.title.y = element_text(face="bold", size=13, margin = margin(t = 0, r = 20, b = 0, l = 0)),
      axis.text.y  = element_text(size=12),
      axis.text.x  = element_text(size=12),
      legend.text = element_text(size=12))
Das sieht dann so aus:
Unbenannt.JPG
Die gelb markierten Stellen krieg ich noch nicht geklärt.

Meine Fragen also:

1. Wie kriege ich oben die Zeile aus, die nicht mehr beschriftet ist? Ich habe nur 4 Zeilen und nicht 5.

2. Wie kann ich die Stufen in der Legende umbenennen?
Rein soll:

Code: Alles auswählen

levels=c("obere", "mittlere", "untere")
3. Wie kann ich die Farben der Punkte ändern?
Folgende brauche ich:

Code: Alles auswählen

values=c("darkcyan", "gray44", "aquamarine3")
4. An welcher Stelle gebe ich denn nun meine Werte ein, die auf den jeweiligen Zeilen angezeigt werden sollen?

Code: Alles auswählen

Rein müssen ein mal der Mittelwert der Gesamten Stichprobe: 
Gesamt <- c(2.52, 2.93, 1.49, 2.79)
sowie die Mittelwerte meiner 3 Gruppen:
oEkl <- c(2.67, 3.28, 1.64, 2.69)
mEkl <- c(2.5, 2.89, 1.48, 2.81)
uEkl <- c(2.46, 2.71, 1.36, 2.79)
Antworten