web-dev-qa-db-fra.com

Visualiser deux ou plusieurs points de données où ils se chevauchent (ggplot R)

J'ai un nuage de points qui comporte des points de données codés par couleur. Lorsque deux points de données ou plus se chevauchent, une seule des couleurs est affichée (la première des deux valeurs dans la légende). Chacun de ces points de données représente un élément et je dois montrer quels éléments se trouvent à chaque point de l'échelle. J'utilise R (v.3.3.1). Quelqu'un aurait-il des suggestions quant à la manière dont je pourrais montrer qu'il y a plusieurs éléments à chaque point du diagramme de dispersion? ... Merci d'avance. 

pdf('pedplot.pdf', height = 6, width = 10)
p3 <- ggplot(data=e4, aes(x=e4$domain, y=e4$ped)) + geom_point(aes(color = 
    e4$Database_acronym), size = 3, shape = 17) + 
    labs(x = "Domains", y = "Proportion of Elements per Domain", color = "Data 
    Sources") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) 
p3 dev.off();
4
Cate

Séparément ou en plus de l’agitation mentionnée ici, vous pouvez également envisager de rendre les points partiellement transparents:

linecolors <- c("#714C02", "#01587A", "#024E37")
fillcolors <- c("#9D6C06", "#077DAA", "#026D4E")

# partially transparent points by setting `alpha = 0.5`
ggplot(mpg, aes(displ, cty, colour = drv, fill = drv)) +
  geom_point(position=position_jitter(h=0.1, w=0.1),
             shape = 21, alpha = 0.5, size = 3) +
  scale_color_manual(values=linecolors) +
  scale_fill_manual(values=fillcolors) +
  theme_bw()

 enter image description here

6
Claus Wilke

Vous pourriez giffer les points, ce qui signifie ajouter un peu de bruit pour supprimer le chevauchement (probablement l'option la plus couramment utilisée). Une autre option consisterait à utiliser différentes formes de marqueur (plus un réglage de petite taille) choisi de manière à ce que les marqueurs soient visibles lorsqu'ils sont superposés. Cela fonctionnera si vous n’avez que deux ou trois types de marqueurs différents. Une troisième option consiste à modifier la taille pour chaque couleur, encore une fois uniquement dans les cas avec peut-être deux ou trois couleurs/tailles, bien que la différence de taille puisse être source de confusion. Si vous pouvez avoir plusieurs points de la même couleur avec les mêmes coordonnées, seul le jitter (parmi les trois options ci-dessus) le rendra apparent. Dans tous les cas, voici des exemples de chaque approche:

dat = data.frame(x=1:5, y=rep(1:5,3), group=rep(LETTERS[1:3],each=5))
theme_set(theme_bw())

# Jitter
set.seed(3)
ggplot(dat, aes(x,y, colour=group)) +
  geom_point(size=3, position=position_jitter(h=0.15,w=0.15))

# Vary the marker size
ggplot(dat, aes(x,y, colour=group,size=group)) +
  geom_point() +
  scale_color_manual(values=c("red","blue","orange")) +
  scale_size_manual(values=c(5,3,1))

# Vary the marker shape (plus a small size adjustment)
ggplot(dat, aes(x,y, colour=group, size=group, shape=group)) +
  geom_point(stroke=1.5) +
  scale_colour_manual(values=(c("black", "green", "orange"))) +
  scale_shape_manual(values=c(19,17,4)) +
  scale_size_manual(values=c(4,3,3))

 enter image description here

5
eipi10

Essayez geom_point(aes(color = e4$Database_acronym), position = "jitter", size = 3, shape = 17).

Cela ajoute un peu de variation aléatoire à votre nuage de points et évite ainsi une superposition.

0
tifu