ggplot2_Horizontale

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
cacadu
Beiträge: 11
Registriert: Do Sep 10, 2020 3:13 pm

ggplot2_Horizontale

Beitrag von cacadu »

Hallo,
ich bin grade dabei mit ggplot2 meine Daten darzustellen, bin aber auf zwei Probleme gestoßen:
1. Ich habe 12 Panels (faced_wrap) und würde jedem gerne noch eine Horizontale hinzufügen. An sich wollte ich den Befehl
geom_hline benutzen. Meine Frage ist nun, ob ich diese in jedem Panel direkt mit diesem Befehl in eine andere Höhe legen kann, meine bisherigen Versuche führten dazu, dass ich in jedem die 12 gleichen Linien hatte, statt in jedem eine in anderer Höhe.

Mein bisheriger Code lautet:

Code: Alles auswählen

ggplot(Profile, aes(Profil, Tiefe))+geom_raster(aes(fill=Wert), interpolate=TRUE)+facet_wrap(~Profil, scales = "free")+geom_hline(yintercept=c(0.2,0.12,0.15,0.26,0.34,0.45,0.15,0.26,0.34,0.25,0.50,0.12), show.legend = True)+scale_fill_gradient(low = "lightblue", high = "darkblue", na.value = NA)+scale_y_continuous(breaks = c(0.0,0.1,0.2,0.3,0.4,0.5), labels = c("0.0","0.1","0.2","0.3","0.4","0.5"))+scale_fill_continuous(name= "Ksat[mm/h]",breaks=c(0,200,400,600,800,1000), labels=c("0","200", "400", "600", "800", "<1000"))
2. die Codes "scale_fill_gradient(...)" und "scale_fill_continuous(...)" funktionieren bei mir nicht gemeinsam, habe ich beides im Code, so funktioniert nur der erste, zweiterer nur, wenn ich den ersten ganz rausnehme. Hat jemand eine Idee, wie ich das lösen könnte?

Vielen Dank schoneinmal für jede Hilfe!
Zuletzt geändert von cacadu am Di Okt 27, 2020 4:41 pm, insgesamt 1-mal geändert.
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: ggplot2_Horizontale

Beitrag von Athomas »

Bitte immer eine kleines Beispiel (Daten + Programm) zum Nachvollziehen dazupacken!

Hier musst Du halt für jedes Facet die gewünschte Höhe mitgeben...
Präziser, wenn komplettes Beispiel :) !
cacadu
Beiträge: 11
Registriert: Do Sep 10, 2020 3:13 pm

Re: ggplot2_Horizontale

Beitrag von cacadu »

Danke erstmal für deine Hilfe.
So sehen die Daten im Moment aus:
Unbenannt.PNG
Unbenannt.PNG (5.66 KiB) 823 mal betrachtet
Das hatt ich mir schon fast gedacht, dass ich das einzelnd machen muss, ich hab nur leider keine Ahnung wie, hättest du eine Idee?
ach, und ich arbeite mit rStudio und dem Paket ggplot2
Zuletzt geändert von cacadu am Di Okt 27, 2020 4:49 pm, insgesamt 1-mal geändert.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: ggplot2_Horizontale

Beitrag von bigben »

Ein Foto von Zahlenkolonnen hilft nun niemandem. Lies mal hier : viewtopic.php?f=20&t=11

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
cacadu
Beiträge: 11
Registriert: Do Sep 10, 2020 3:13 pm

Re: ggplot2_Horizontale

Beitrag von cacadu »

Tut mir Leid, ich bin noch etwas sehr unerfahren hier.
So ist es hoffentlich besser.
Daten:

Code: Alles auswählen

Profile<-structure(list(Profil = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 
5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 
11, 11, 12, 12, 12), Tiefe = c(0.1, 0.3, 0.5, 0.1, 0.3, 0.5, 
0.1, 0.3, 0.5, 0.1, 0.3, 0.5, 0.1, 0.3, 0.5, 0.1, 0.3, 0.5, 0.1, 
0.3, 0.5, 0.1, 0.3, 0.5, 0.1, 0.3, 0.5, 0.1, 0.3, 0.5, 0.1, 0.3, 
0.5, 0.1, 0.3, 0.5), Wert = c(438.4, 156.2, 210.6, 1, 0.5, 1.3, 
1.1, 0.5, 1.4, 0.6, 0.6, 1000, 906.47, 24.17, 0.22, 0, 0.34, 
0.51, 0.45, 0, 0.08, 0.03, 2.76, 0.29, 13.03, 65.33, 0.01, 0.34, 
0.09, 0.02, 0.02, 2.23, 0.21, 2.03, 0.45, 2.21)), class = "data.frame", row.names = c(NA, 
-36L))
Paket und Programm:

Code: Alles auswählen

sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)

Matrix products: default

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C                    LC_TIME=German_Germany.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_3.3.2 readxl_1.3.1 

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.4.6     rstudioapi_0.11  magrittr_1.5     tidyselect_1.1.0 munsell_0.5.0    colorspace_1.4-1 R6_2.4.1        
 [8] rlang_0.4.7      fansi_0.4.1      dplyr_1.0.2      tools_3.6.1      grid_3.6.1       gtable_0.3.0     utf8_1.1.4      
[15] cli_2.0.2        withr_2.2.0      ellipsis_0.3.0   digest_0.6.25    assertthat_0.2.1 tibble_3.0.1     lifecycle_0.2.0 
[22] crayon_1.3.4     farver_2.0.3     purrr_0.3.4      vctrs_0.3.2      glue_1.4.0       labeling_0.3     compiler_3.6.1  
[29] pillar_1.4.4     cellranger_1.1.0 generics_0.0.2   scales_1.1.1     pkgconfig_2.0.3 

So, ich hoffe damit habe ich deine Geduld noch nicht überstrapaziert,
liebe Grüße, Cacadu
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: ggplot2_Horizontale

Beitrag von bigben »

Ich bin gar nicht ungeduldig, nur kurz angebunden, wenn ich auf dem Handy schreibe. Ich mag echte Tastaturen lieber. Will mich auch gar nicht vordrängeln, wenn Athomas schon einen Ansatz im Kopf hat.

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: ggplot2_Horizontale

Beitrag von Athomas »

Will mich auch gar nicht vordrängeln, wenn Athomas schon einen Ansatz im Kopf hat.
Ja, im Prinzip so, wie ich es früher gesagt hatte: einen weiteren Dataframe aufmachen, in dem für jedes "Profil" die gewünschte Höhe drinsteht und daraus dann geom_hline speisen...

Ich habe aber ehrlich gesagt keinen Bock, das auf die vorgegebene schwache Basis aufzupfropfen - und auch keine, ein völlig neues Beispiel zur sauberen Demonstration zu konstruieren!

Insofern entbinde ich Dich gerne von Deiner (empfundenen) Nichteinmischungspflicht :) !
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: ggplot2_Horizontale

Beitrag von bigben »

Ich verspüre keine Nichteinmischungspflicht. Einmischen tu ich mich immer gerne. Ich weiß bloß, dass Du ggplot2 viel besser kannst als ich.

Sei's drum, ich verstehe die Aufgabe etwa so:

Code: Alles auswählen

hilfreich  <- data.frame(Profil = 1:12,
                         y = c(0.2,0.12,0.15,0.26,0.34,0.45,0.15,0.26,0.34,0.25,0.50,0.12))


ggplot(Profile, aes(1, Tiefe)) +
  geom_raster(aes(fill=Wert),interpolate=TRUE) +
  geom_hline(data = hilfreich, aes(yintercept=y), color ="yellow") +
  facet_wrap(~ Profil) +
  scale_x_continuous(labels=NULL, limits =c(0.5,1.5)) + xlab("") +
  scale_y_continuous(breaks = c(0.0,0.1,0.2,0.3,0.4,0.5), labels = c("0.0","0.1","0.2","0.3","0.4","0.5")) +
  scale_fill_continuous(name= "Ksat[mm/h]",breaks=c(0,200,400,600,800,1000), labels=c("0","200", "400", "600", "800", "<1000"))
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
cacadu
Beiträge: 11
Registriert: Do Sep 10, 2020 3:13 pm

Re: ggplot2_Horizontale

Beitrag von cacadu »

Vielen vielen Dank dir, genau so wars gemeint, hatte bei meinen Versuchen irgendwie die Daten wohl immer falsch zusammen gepackt, aber jetzt funktioniert es endlich:D
Liebe Grüße, Caro
Antworten