J'essaie de créer un diagramme de dispersion où l'arrière-plan de la zone de 0 à 25 sur l'axe des x est rouge, la zone de 25 à 75 est jaune et la zone de 75 à 100 vert, vous pouvez voir immédiatement quelles sont les valeurs critiques. J'ai regardé toutes les questions concernant ce sujet, mais aucune ne semble correspondre à ma question. Voici un petit exemple reproductible:ggplot2/ggpubr: Différentes couleurs d'arrière-plan en fonction de l'axe x
library(tidyverse)
library(ggpubr)
v1 <- c(1, 1, 1)
v2 <- c(1, 0, 0)
v3 <- c(1, 0, 1)
v4 <- c(0, 1, 1)
xG <- c(3, 3, 3, 3)
input <- c(v1, v2, v3, v4)
df <- data_frame(values = input,
module = c(rep("A", length(v1)),
rep("B", length(v2)),
rep("C", length(v3)),
rep("D", length(v4))))
perWorkField <- df %>%
group_by(module) %>%
summarise(sums = sum(values)) %>%
mutate(percent = round((sums/xG) * 100, 2))
g <- ggscatter(data = perWorkField,
x = "percent",
y = "module",
shape = 4)
g <- ggpar(g, xlim = c(0, 100))
print(g)
Je préfère utiliser ggpubr pour tracer, mais il est entièrement compatible avec ggplot2. Je suis reconnaissant pour toute aide. Merci d'avance!
EDIT: De toute évidence ggpubr n'est pas la meilleure solution pour cette tâche que les points sont dans l'arrière-plan derrière les zones colorées. Avec ggplot2 la solution serait:
ggplot(data = perWorkField) +
geom_point(mapping = aes(x = percent, y = module), shape = 20) + xlim(c(0, 100)) +
geom_polygon(aes(x=c(0,25,25,0),
y=c(0.5,0.5,4.5,4.5)),fill="#F5817A",color=NA) +
geom_polygon(aes(x=c(25,75,75,25),
y=c(0.5,0.5,4.5,4.5)),fill="#FFFF0044",color=NA) +
geom_polygon(aes(x=c(75,100,100,75),
y=c(0.5,0.5,4.5,4.5)),fill="#00FF0044",color=NA) +
geom_point(mapping = aes(x = percent, y = module)) + theme_light()
Merci qui a fait l'affaire. Connaissez-vous un moyen de garder les croix visibles même lorsque la couleur est plus profonde? – jeypeu
@jeypeu Je ne connais pas * ggpubr *, mais dans "regular" * ggplot2 * vous placeriez le calque de points après le calque de polygone (ou rectangle) de sorte que les points soient au-dessus des polygones au lieu de dessous. – aosmith
@aosmith Parfait! Je viens de le réécrire en code ggplot2 original et ça marche bien. – jeypeu