Ankündigung

Einklappen
Keine Ankündigung bisher.

R Studio Hilfe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    https://stackoverflow.com/questions/42271113/fill-or-colour-in-continuous-scale-through-gradient-of-more-than-2-defined-colou

    Kommentar


      #17
      habs jetz relativ gut hinbekommen, danke dir :) neues problem besteht jetz darin, dass mein plot quasi fast ausschließlich grün (mittlere werte) ist und man so kaum unterschiede rauslesen kann.

      ich hab ein paar ausreißer nach unten (bis -3) und nach oben (bis +7), die meisten werte liegen zwischen -2 und +2, davon wiederum die meisten zwischen -0.5 und 0.5. wär wohl das geschickteste wenn ich die färbung logarithmisch mache? das übersteigt allerdings wieder komplett meine kompetenz :O

      code sieht jetz für die skala so aus:

      scale_fill_gradientn(limits=c(-3, 7), breaks=seq(-3,7,by=0.25), colours = c("#300000", "#ffc519", "#09bc00", "#00577f", "#380036"))

      Kommentar


        #18
        Kannst du die breaks nicht einfach selbst definieren? Erste Antwort in meinem link oben macht das, denke ich, so. Schaue es später eventuell nochmal an.
        Du könntest in den Abständen der Breaks die Farben angeben, also sowas wie
        colours = c(rep("#300000", 5), rep("#ffc519", 10), rep("#09bc00", 5), rep("#00577f", 10), rep("#380036", 10))
        Schöner wird es natürlich, wenn du mehr Farben nutzt, statt die einfach zu wiederholen. Aber jede Farbe bekommt 1/Anzahl an Farben*Breite der Limits an Färbregion zugewiesen afaik.
        Du könntest also von -3 bis -2 in einer Farbe färben, von -2 bis -0.5 in einer Farbe und von -0.5 bis +0.5 in vier Farben, etc.
        Dann würdest du die erste Farbe 4 mal angeben, die von -2 bis -0.5 sechs Mal, die vier Farben jeweils einmal, dann wieder 6 und am ende 20 mal die letzte Farbe.

        scale_fill_gradientn(
        name = "linear trend",
        colours = c(rep("#300000", 4), rep("#ffc519", 6), "#09bc00", "red", "yellow", "orange", rep("#00577f", 6), rep("#380036", 20)),
        breaks = seq(-3, 7, by=0.25),
        limits = c(-3, 7)
        )

        Ist zwar hässlich, zeigt aber, was ich sagen will. red, yellow und orange solltest du durch passende hex-Werte ersetzen. Die Breaks würde ich auch nicht so dicht setzen, außer du skalierst das Bild extrem hoch.

        Kommentar

        Lädt...
        X