2017-08-11 4 views
0

Also habe ich zwei Gruppen mit einer dritten verglichen, indem ich eine Reihe von Eingaben verwendet habe. Für jede der drei Gruppen habe ich einen Wert und ein Konfidenzintervall für eine Reihe von Eingaben. Für die beiden Vergleiche habe ich auch einen p-Wert für diesen Bereich von Eingaben. Jetzt möchte ich alle fünf Datenreihen plotten, aber für die p-Werte eine zweite Achse verwenden.Wie man jedes Diagramm zur Korrektur der y-Achse zeigt (viele Diagramme, zwei y-Achsen, in R mit ggplot2)

Ich kann das mit einer einzigen Sache tun: wie stelle ich sicher, dass R weiß, welche der Plots der zweiten Achse zuzuweisen?

So sieht es jetzt aus. Die unteren beiden Datenreihen sollten bis zur Y-Achse nach rechts skaliert werden.

ggplot(df) + 
    geom_pointrange(aes(x=x, ymin=minc, ymax=maxc, y=meanc, color="c")) + 
    geom_pointrange(aes(x=x, ymin=minb, ymax=maxb, y=meanb, color="b")) + 
    geom_pointrange(aes(x=x, ymin=mina, ymax=maxa, y=meana, color="a")) + 
    geom_point(aes(x=x, y=c, color="c")) + 
    geom_point(aes(x=x, y=b, color="b")) + 
    scale_y_continuous(sec.axis = sec_axis(~.*0.2)) 

df ist ein Datenrahmen, deren Spaltennamen sind alle Variablen, die Sie oben aufgeführt ist, alle Zeilenwerte die entsprechenden Datenpunkte sind.

enter image description here

+1

Sie können die p-Werte vergrößern/0,2 –

+0

@SRivero Ha, ich wie diese Idee. Werde das jetzt nutzen. Obwohl ich denke, dass es eine Möglichkeit gibt, jeder Zeichnung ein Attribut zu geben, das ihre Einheit oder Y-Achse definiert, so dass Sie Ihre Datenwerte nicht einfach ändern müssen, um sie zu plotten. – Leo

+3

Keine Verwendung von ggplot. https://stackoverflow.com/questions/3099219/plot-with-2-y-axes-one-y-axis-on-the-left-and-another-y-axis-on-the-right –

Antwort

2

Sie bekommen, was Sie wollen, treu zu bleiben Hadley Kanone und Grammatik von Grafiken Evangelium, wenn Sie Ihre DF von breit zu lange transformieren, und verwenden eine andere aes (dh Form, Farbe, füllen) zwischen Mitteln und CI.

Sie haben kein reproduzierbares Beispiel angegeben, also stelle ich meine eigenen ein. (Dput am Ende des Pfostens)

df2 <- df %>% 
     mutate(CatCI = if_else(is.na(CI), "", Cat)) # Create a categorical name to map the CI to the legend. 

ggplot(df2, aes(x = x)) + 
     geom_pointrange(aes(ymin = min, ymax = max, y = mean, color = Cat), shape = 16) + 
     geom_point(data = dplyr::filter(df2,!is.na(CI)), ## Filter the NA within the CI 
      aes(y = (CI/0.2), ## Transform the CI's y position to fit the right axis. 
      fill = CatCI), ## Call a second aes the aes 
      shape = 25, size = 5, alpha = 0.25) + ## I changed shape, size, and fillto help with visualization 
     scale_y_continuous(sec.axis = sec_axis(~.*0.2, name = "P Value")) + 
     labs(color = "Linerange\nSinister Axis", fill = "P value\nDexter Axis", y = "Mean") 

Ergebnis:

![enter image description here

Datenrahmen:

df <- structure(list(Cat = c("a", "b", "c", "a", "b", "c", "a", "b", 
"c", "a", "b", "c", "a", "b", "c"), x = c(2, 2, 2, 2.20689655172414, 
2.20689655172414, 2.20689655172414, 2.41379310344828, 2.41379310344828, 
2.41379310344828, 2.62068965517241, 2.62068965517241, 2.62068965517241, 
2.82758620689655, 2.82758620689655, 2.82758620689655), mean = c(0.753611797661977, 
0.772340941644911, 0.793970086962944, 0.822424652072316, 0.837015408776649, 
0.861417383841253, 0.87023105762465, 0.892894201949377, 0.930096326498796, 
0.960862178366363, 0.966600321596147, 0.991206984637544, 1.00714201832596, 
1.02025006679944, 1.03650896186786), max = c(0.869753641121797, 
0.928067675294351, 0.802815304215019, 0.884750162053761, 1.03609814491961, 
0.955909854315582, 1.07113399603486, 1.02170928767791, 1.05504846273091, 
1.09491706586801, 1.20235615364205, 1.12035782960649, 1.17387406039167, 
1.13909154635088, 1.0581878034897), min = c(0.632638511783381, 
0.713943701135991, 0.745868763626567, 0.797491261486603, 0.743382797144923, 
0.827693203320894, 0.793417962991821, 0.796917421637021, 0.92942504556723, 
0.89124101157585, 0.813058838839382, 0.91701749675892, 0.943744642652422, 
0.912869230576973, 0.951734254896252), CI = c(NA, 0.164201137643034, 
0.154868406784159, NA, 0.177948094206453, 0.178360305763648, 
NA, 0.181862670931493, 0.198447350829814, NA, 0.201541499248143, 
0.203737532636542, NA, 0.205196077692786, 0.200992205838595), 
    CatCI = c("", "b", "c", "", "b", "c", "", "b", "c", "", "b", 
    "c", "", "b", "c")), .Names = c("Cat", "x", "mean", "max", 
"min", "CI", "CatCI"), row.names = c(NA, 15L), class = "data.frame") 
Verwandte Themen