Seite 1 von 1

Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Do Jan 16, 2020 5:49 pm
von Freddy19911
Hallo Zusammen,

ich möchte das Maximum, das Minimum und den Durchschnitt eines bestimmten Merkmals als horizontales Balkendiagramm darstellen. Ich habe z.B. den Jahresumsatz von zwei Unternehmen für zehn Jahre vorliegen und möchte ein horizontales Balkendiagramm erstellen, wobei der jeweilige Balken eines Unternehmens vom kleinsten Umsatz innerhalb der 10 Jahresperiode (Minimum) bis zum höchsten Umsatz innerhalb der Periode (Maximum) dargestellt werden soll und der Durchschnitt durch eine vertikale Linie durch den Balken markiert wird. Die Werte von Min, Max und Durchschnitt sind bereits in R eingelesen und müssen nicht mehr berechnet werden. Die Datenstruktur sieht wie folgt aus:
-------------------Unternehmen 1-------------Unternehmen 2
Min-----------------100-----------------------------200
Durchschnitt------150-----------------------------250
Max-----------------200-----------------------------300

Im Prinzip also eine Art horizontaler Boxplot
Hat jemand eine Idee wie ich das in R realisieren kann?
Vielen Dank

Re: Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Do Jan 16, 2020 9:04 pm
von bigben
Gibt es Vorgaben, ob das in ggplot2 oder in base dargestellt werden soll?

Re: Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Do Jan 16, 2020 9:06 pm
von Freddy19911
Hallo,
Vorgaben gibt es keine. Ich hatte es bisher nur mit ggplot2 anhand eines ähnlichen threads aus dem Internet versucht. Leider vergeblich.

Re: Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Do Jan 16, 2020 9:12 pm
von bigben

Code: Alles auswählen

library(ggplot2)
bsp <- data.frame(company = c("A", "B", "C"),
                  min = c(100, 200, 130),
                  max = c(200, 300, 180),
                  mean = c(150, 250, 140))

p <- ggplot(bsp, aes(x=company)) + 
     geom_linerange(aes(ymin=min, ymax=max)) +
     geom_point(aes(y = mean)) +
     xlab("Company") + ylab("in Dollars $$$") +
     coord_flip()
print(p)
Geht das in die richtige Richtung? Wenn ja, dann beschäftige Dich mal mit der Funktion t()


EDIT: Hier eine Variante, die etwas weniger strichhaft und dafür etwas balkiger ist:

Code: Alles auswählen

p <- ggplot(bsp, aes(x=company)) + 
     geom_linerange(aes(ymin=min, ymax=max), lwd=20) +
     geom_point(aes(y = mean), lwd=10, color="white") +
     xlab("Company") + ylab("in Dollars $$$") +
     coord_flip()
print(p)
Rplot.jpeg

Re: Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Fr Jan 17, 2020 9:15 am
von Freddy19911
Hallo bigben,

vielen Dank, so hatte ich mir das vorgestellt. Gibt es noch eine Möglichkeit die entsprechenden Maximum und Minimum Werte am Ende bzw. Anfang des jeweiligen Balken darzustellen?

Beste Grüße

Re: Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Fr Jan 17, 2020 10:32 am
von bigben
Dargestellt sind die Werte ja durch Anfang und Ende vom Balken. Möchtest Du da auch noch einen Punkt oder einen senkrechten Strich haben oder möchtest Du eine Strichverlängerung auf die Achse haben oder möchtest Du die Zahlen dazu ins Diagramm schreiben?

LG,
Bernhard

Edit: Hilft das hier vielleicht: https://ggplot2.tidyverse.org/reference/annotate.html :?:

Re: Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Fr Jan 17, 2020 11:14 am
von Freddy19911
Danke für den Link, den schaue ich mir gleich mal an :-)
Am besten wäre ein senkrechter Strich am Anfang und Ende des Balkens sowie die dazugehörigen Werte an den beiden Strichen. Sollten einmal mehr Unternehmen dazukommen, würde eine Verlängerung auf den Wert an der Achse wohl zu unübersichtlich.

LG und ein schönes Wochenende

Re: Horizontales Balkendiagramm mit Min Max und Durchschnitt

Verfasst: Fr Jan 17, 2020 12:58 pm
von bigben

Code: Alles auswählen

library(ggplot2)
bsp <- data.frame(company = c("A", "B", "C"),
                  min = c(100, 200, 130),
                  max = c(200, 300, 180),
                  mean = c(150, 250, 140))

p <- ggplot(bsp, aes(x=company)) + 
  geom_errorbar(aes(ymin=min, ymax=max, width=.2)) +
  geom_point(aes(y = mean)) +
  xlab("Company") + ylab("Jahresumsatz") +
  coord_flip() + 
  geom_text(aes(y=min-7, label = min)) +
  geom_text(aes(y=max+7, label = max)) +
  geom_text(aes(x=as.numeric(company)-.2, y=mean, label = mean)) 
print(p)
Rplot.jpeg