extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
Don king kong
Beiträge: 4
Registriert: Di Okt 09, 2018 4:59 pm

extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von Don king kong » Di Okt 09, 2018 5:52 pm

Hallo zusammen,
für meine Masterarbeit untersuche ich momentan metrologisch Bedingte Erdbewegungen (ja, das ist super spannend).

so sieht der Plot aus den ich mit Excel hinbekomme:
Bild
Säulen bestehen aus den Daten der versch. Erdbewegungen.
Die Linien sind gemittelte Jahreswerte aus Niederschlag (NJ) und Temp (TJ), auf der Sekundärachse.
Die Temp. wurde mit 100 multipliziert damit sie auf der höhe der Niederschlagskurve ist.

Das sind die Daten:

Code: Alles auswählen

Jahr	Rutschung      Felssturz Steinschlag	NJ	TJ	TJ*100
01.01.1980	5	    8	        10	879,70	8,07	806,54157
01.01.1981	2	    15	        25	1037,46	8,50	849,51221
01.01.1982	12	    8	        3	847,96	9,09	909,14498
01.01.1983	8	    1	        1	804,23	9,20	920,22296
01.01.1984	3	    1	        3	961,34	8,28	828,49627
01.01.1985	12	    8	        7	696,38	7,71	770,65022
01.01.1986	4	    4	        16	889,58	8,29	828,66979
01.01.1987	8	    25	        1	922,25	7,91	791,11279
01.01.1988	19	    8	        6	910,32	9,35	935,21287
01.01.1989	14	    2	        2	765,48	9,67	966,57637
in Zukunft sollen auch noch die Monatswerte für Niederschlag und Temp hinzukommen.
Leider stoße ich mit Excel hier an die Grenzen, ich hab alles mögliche ausprobiert am ende sieht es so aus:
Bild

blöde //()!"§&!

Ich experimentiere schon seit einigen Tagen mit R rum, komm aber leider nicht klar :(

soweit bin ich gekommen:

Code: Alles auswählen

dfm <-melt(datei1[,c('Jahr', 'Rutschung', 'Felssturz', 'Steinschlag')], id.vars = 1)
ggplot(dfm,aes(x =Jahr,y = value)) + 
geom_bar(aes(fill = variable),stat = "identity",position = "dodge") + 
ylab("Anzahl der Bewegungen")+
ggtitle("Titel")+
theme(legend.position = "top")+
 scale_fill_manual(legend_title,values=c("orange","red","Blue"))+
 geom_line(data=NJ, aes(x=Jahr,y=NJ))+
geom_line(data=TJ_80_90, aes(x=Jahr,y=TJ))
Das ist bestimmt kein schöner Code, aber er plottet mir einmal das gruppiertes Säulendiagramm + Niederschlagskurve + Temp.
Sekundärachse oder die zweite Achsenskalierung bekomme ich schon nicht mehr hin.

Ich würde das ganze gerne ohne melting hinbekommen und bei bedarf nach und nach neue Daten hinzufügen plotten(Eis-,Frost- und Heißetage, Dürreperioden uvm.).

hab auch schon mit der

Code: Alles auswählen

plot(ggplot(geom_bar...) 
par(new = TRUE) 
plot(ggplot(geom_line...)
rumgespielt, .... war nicht so geil.


Bin für alle brauchbaren Tipps dankbar

Viele Grüße
Y.
Zuletzt geändert von jogo am Mi Okt 10, 2018 9:34 am, insgesamt 1-mal geändert.
Grund: Formatierung verbessert.

Athomas
Beiträge: 104
Registriert: Mo Feb 26, 2018 8:19 pm

Re: extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von Athomas » Mi Okt 10, 2018 1:15 pm

Zwei y-Achsen sind in ggplot nur mit bestimmten Einschränkungen möglich
scale_x_continuous() and scale_y_continuous() can now display a secondary axis that is a one-to-one transformation of the primary axis
- aber trifft hier ja wohl zu.
Ursprünglich wollte der Schöpfer so etwas gar nicht zulassen
It's not possible in ggplot2 because I believe plots with separate y scales (not y-scales that are transformations of each other) are fundamentally flawed.
aber er hat sich offenbar dem Gequengel der Excel-Nutzerschaft gebeugt :) !

Der Artikel https://rpubs.com/MarkusLoew/226759 beschäftigt sich mit diesen Fragen...

Wenn Du konkrete Hilfe möchtest, solltest Du Dir angewöhnen, ein "Minimalbeispiel" zu liefern - d.h. im Wesentlichen ein Programm, das den Fehler (oder die Abweichung von der erwünschten Verarbeitung) erzeugt UND die Daten, die dabei verwendet wurden.

Wenn Du die Daten nicht veröffentlichen kannst oder willst, musst Du sie halt verfremden oder komplett neu erzeugen.

"Minimal" bedeutet, dass beide Komponenten weitestmöglich abgespeckt sind, der Fehler aber noch da ist :) ...
Glaube nicht alles, was im Internet geschrieben wird - bloss weil da ein Name und ein Zitat stehen! (Immanuel Kant)

Don king kong
Beiträge: 4
Registriert: Di Okt 09, 2018 4:59 pm

Re: extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von Don king kong » Do Okt 11, 2018 1:02 pm

Super Vielen Dank, ich werde mich damit nochmal auseinander setzen und dann ein minimalbsp geben :))

Hab die Daten zu den Erdbewegungen schon verfälscht, am End gibt es noch stress mit dem Prof :roll:

Don king kong
Beiträge: 4
Registriert: Di Okt 09, 2018 4:59 pm

Re: extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von Don king kong » Do Okt 11, 2018 2:52 pm

Um es einfach mal rum zu spielen hab ich mit folgenden Daten versucht:

Code: Alles auswählen

Jahr	Rutschung      Felssturz Steinschlag	NJ	TJ	TJ*100
01.01.1980	5	    8	        10	879,70	8,07	806,54157
01.01.1981	2	    15	        25	1037,46	8,50	849,51221
01.01.1982	12	    8	        3	847,96	9,09	909,14498
01.01.1983	8	    1	        1	804,23	9,20	920,22296
01.01.1984	3	    1	        3	961,34	8,28	828,49627
01.01.1985	12	    8	        7	696,38	7,71	770,65022
01.01.1986	4	    4	        16	889,58	8,29	828,66979
01.01.1987	8	    25	        1	922,25	7,91	791,11279
01.01.1988	19	    8	        6	910,32	9,35	935,21287
01.01.1989	14	    2	        2	765,48	9,67	966,57637
Niederschlag und Temperatur zu plotten (dabei hab ich mich an den link gehalten)

Code: Alles auswählen

library(ggplot2)
X10 <- X10_jahre
p <- ggplot(X10, aes(x = Jahr))
p <- p + geom_line(aes(y = NJ, colour= "Niederschlag"))
p <- p + geom_line(aes(y=TJ*100, colour = "Temp."))  
p <- p + scale_y_continuous(sec.axis = sec_axis(~./100, name = "Temperatur"))
p <- p + scale_colour_manual(NJ = c("blue"))
p <- p + scale_colour_manual(TJ = c("red"))
p <- p + labs(y = "Niederschlag",
              x = "Jahr",
              colour = "Parameter")
p <- p + theme(legend.position = c(0.8, 0.9))
leider funktioniert das schon nicht :\
btw: ist das jetzt ein minimalbsp.?

also so wie ich das verstanden hab, muss man die Daten transformieren, R liest die Werte für die 2-Achse nicht aus den Datensatz. Was rescale bedeutet ist mir klar, wie ich es anwende nicht :\

Athomas
Beiträge: 104
Registriert: Mo Feb 26, 2018 8:19 pm

Re: extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von Athomas » Do Okt 11, 2018 3:45 pm

btw: ist das jetzt ein minimalbsp.?
Ganz sicher nicht - die Eingabedaten müsste ich mir (wenn ich Dich richtig verstehe) aus dem Textoutput selber extrahieren (hab ich kein Bock auf) und der wichtige (weil fehlerträchtige) Einleseprozess wird gar nicht erwähnt.
Die Farbwahlen dürften für Deinen "Fehler" genauso wie die Position der Legende unerheblich sein und stellen deshalb aller Voraussicht nach nur Ballast dar...

Darf ich mal ganz schüchtern anfragen, was Du mit Deiner speziellen Form der Grafik veranschaulichen möchtest?
Ich - metrologischer Laie :lol: - sehe da selbst bei dem "gelungenen" Excel-Exemplar so gut wie gar nix :oops: !
Glaube nicht alles, was im Internet geschrieben wird - bloss weil da ein Name und ein Zitat stehen! (Immanuel Kant)

Don king kong
Beiträge: 4
Registriert: Di Okt 09, 2018 4:59 pm

Re: extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von Don king kong » Fr Okt 12, 2018 2:47 pm

arg, dann schreib ich nächste Woche nochmal den Code, aber diesmal inkl. Daten :)

Na klar darfst du fragen:
Also vorweg, die Daten zu den Erdbewegungen sind fiktiv, die echten Daten hab ich vom Amt und ich weiß nicht ob ich sie vertraulich behandeln muss, deswegen poste ich sie nicht. Die Niederschlagsdaten sind vom DWD und jedem frei zugänglich, die Daten passen so, wie sie da stehen.
1981 gab es mehr Rutschungen als da stehen und es sieht nach eine Korrelation mit der Niederschlagsmenge aus, darüber hinhaus gibt es auch noch eine Korrelation zwischen Temp. und Steinschlag. Meine Hyphothese bzgl. den Rutschungen ist das für ein vermehrtes auftreten (jetzt mal alles Morphologie unabhängig) es einmal eine entsprechende Niederschlagsklasse(menge) geben muss aber auch eine vorhergegange Trockenperiode(diese verändert die Bodenmechanik und den Abfluss). Um das zu veranschaulichen würde ich gerne später auf eine Jahreskurve eine viel genauere Monatskurve legen und später dann auf die Monatskurve eine Tages kurve und so weiter... :)

Athomas
Beiträge: 104
Registriert: Mo Feb 26, 2018 8:19 pm

Re: extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von Athomas » Fr Okt 12, 2018 5:25 pm

Meine Hyphothese bzgl. den Rutschungen ist das für ein vermehrtes auftreten (jetzt mal alles Morphologie unabhängig) es einmal eine entsprechende Niederschlagsklasse(menge) geben muss aber auch eine vorhergegange Trockenperiode(diese verändert die Bodenmechanik und den Abfluss).
Das ist doch eine klare Ansage - warum versuchst Du denn, die mit einer (über-?) komplexen Grafik zu veranschaulichen?

Also, ich würde mir erstmal einen popeligen Scatterplot zum Zusammenhang zwischen Niederschlagsmenge und Anzahl der Rutschungen anfertigen - ggfs. noch unterschieden nach "vorausgehender Trockenperiode" ja/nein". So etwas kann man relativ einfach mit einer Poisson-Regression beschreiben, die dann auch Hinweise auf die "Stringenz" der Effekte gibt...

Ich glaube allerdings, ohne Kenntnis der Daten wird die Diskussion arg abstrakt bleiben müssen...
Glaube nicht alles, was im Internet geschrieben wird - bloss weil da ein Name und ein Zitat stehen! (Immanuel Kant)

ruedi_br
Beiträge: 13
Registriert: Do Mär 01, 2018 3:53 pm

Re: extra knifflig: gruppiertes Säulendiagramm mit Linien, verschiedenen Variablen und mehreren X&Y-Achsen

Beitrag von ruedi_br » Do Okt 18, 2018 4:33 pm

Noch ein weiterer Gedanke: paarweise plots, um eine Korrelation zwischen nicht nicht-Datums-Variablen zu erkennen?
Oder wenn es schon um Zeitreihen geht, sich evtl mal mit time-Series vertraut machen? "stl" wäre da eine schöne Auswerteoption, die periodisch und Trendanteile auswertet - in Deinem Fall leider nur von einer response-Variablen also z.B. dem Steinschlag.
Grüße
Ruedi

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast