back-to-back Barplot

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

alex
Beiträge: 3
Registriert: Di Dez 25, 2018 10:13 pm

back-to-back Barplot

Beitrag von alex »

Hallo zusammen und frohe Weihnachten!

ich bin seit Tagen am verzweifeln. Ich versuche mit R einen back-to-back Barplot zu entwerfen und schaffe es trotz intensiver Recherche nicht.
Letztendlich habe ich 2 Spalten, von denen ich gerne ein nach rechts und eine nach links plotten würde. Im angehängten Schaubild sind die Daten aus Spalte "A", nun soll nach rechts noch Balken der Zahlen aus Spalte "B". Kann mir jemand dafür eine passende Funktion verraten?

Code: Alles auswählen

library(ggplot2)

bp <- ggplot(data=tkd, aes(x=id, y=A))+
  geom_bar(stat="identity") 
print(bp) + coord_flip()

Code: Alles auswählen

tkd <- read.csv2(text=
"id;	   A;	 B
B201;	3350;	300
B202;	137;   	140
B203;	300;  	733
B204;	104;   	91
B205;	1257;	4790
B206;	312;    627
B207;	3695;	13020")
Bsp. Barplot.pdf
(83 KiB) 62-mal heruntergeladen
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: back-to-back Barplot

Beitrag von ruedi_br »

Da wirst Du auf das grid-System ausweichen müssen, das die Basis von ggplot2 ist (dem Aussehen nach benutzt Du das ja wohl).
Mit ggplot2 die Grafiken schnitzen und jeweils einer Variablen zuweisen, dann
device zur Ausgabe aufmachen, z.B. pdf
2 Viewports nebeneinander aufmachen und in jedem jeweils eine Grafik "print"en.
Vielleicht hat ja jemand noch eine passende Fundstelle dazu 8-)
Gruß
Ruedi
fortune(111)
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: back-to-back Barplot

Beitrag von Athomas »

Da wirst Du auf das grid-System ausweichen müssen, das die Basis von ggplot2 ist
Wat :shock: ? Wo hast Du das denn her?
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: back-to-back Barplot

Beitrag von bigben »

---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
alex
Beiträge: 3
Registriert: Di Dez 25, 2018 10:13 pm

Re: back-to-back Barplot

Beitrag von alex »

Vielen Dank euch, für die Antworten!

Die Anleitungen für Alterspyramiden hab ich mir schon alle zu Gemüte geführt (ähnlich wie der 2. Link von bigben). Da ist die Tabelle aber immer anders strukturiert, es wird also nicht nach 2 Spalten geplottet, sondern nach 2 Variablen einer Spalte (männlich-weiblich) geordnet.

Im Zweifel könnte ich natürlich her gehen und meine Tabelle derart umbauen, aber das ist ziemlich mühsam und unpraktikabel bei großen Mastertabellen. Ich kann mir einfach nicht vorstellen, dass es keine Funktion bei R gibt, mit der man einfach sagen kann "Spalte A nach links und Spalte B nach rechts plotten".
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: back-to-back Barplot

Beitrag von Athomas »

Zumindest ggplot2 liebt - wie EDi gerne sagt - das "lange" Datenformat.
Da die Daten häufig im "weiten" Format vorliegen, ist in R die Umwandlung (etwa per "melt" im package "reshape2") von "wide" auf "long" extrem einfach gestaltet...
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: back-to-back Barplot

Beitrag von bigben »

Im Zweifel könnte ich natürlich her gehen und meine Tabelle derart umbauen
Im Zweifel lohnt sich der Aufwand, das zu lernen. Ich hab es schon 100 Mal gelernt.

Ich kann mir einfach nicht vorstellen, dass es keine Funktion bei R gibt, mit der man einfach sagen kann "Spalte A nach links und Spalte B nach rechts plotten"
Muss es denn ggplot2 sein?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: back-to-back Barplot

Beitrag von ruedi_br »

@Athomas
Wat :shock: ? Wo hast Du das denn her?
Paul Murrell, R Graphics, second Edition, Seite xii
Gruß Ruedi
fortune(111)
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: back-to-back Barplot

Beitrag von Athomas »

@ruedi_br: Da ich das Buch nicht besitze, musste ich mir einen "Preview" anschauen, der leider keine Seitennummerierungen hatte.
Ich vermute, Du beziehst Dich auf diese Passage:
Both lattice and ggplot2 use grid to draw plots, but both can be used without directly encountering grid.
Ob man deswegen grid als "Basis" von ggplot2 bezeichnen sollte? Ich würde es nicht tun...
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: back-to-back Barplot

Beitrag von Athomas »

"Melten" in R ist kein Hexenwerk :lol: :

Code: Alles auswählen

DF.wide <- data.frame(ID=LETTERS[1:10], matrix(runif(50), ncol=5, dimnames=list(NULL, letters[1:5])), stringsAsFactors=FALSE)

library(reshape2)

DF.long <- melt(DF.wide, id.vars="ID", variable.name="Spaltenname")
Antworten