R / ggplot2: comment faire correspondre les couleurs des légendes et des placettes dans les placettes qui se chevauchent?

j'ai deux parcelles de terrain (dites" bleu "et" vert") où le green est principalement sous la parcelle blue , mais sur un très petit nombre de points, il est plus élevé que la parcelle blue . Je veux utiliser la transparence dire alpha = 0.2 pour les deux, et aussi pouvoir spécifier les couleurs pour chacun. Mon problème maintenant est que depuis la parcelle green est la plupart du temps sous la parcelle blue , sa zone a la plupart du temps le mélangé couleur blue + green = certaines autres couleurs, et dans quelques endroits montre son "vrai" couleur verte. Toutefois, la légende montre bien sûr la parcelle blue cartographiée en bleu et la parcelle green cartographiée en vert. Le problème, c'est que quand quelqu'un regarde le graphique, il sera confus puisque le graphe green semble principalement non vert (parce qu'il se superpose au bleu la plupart du temps).

Voici mon code (version super simplifiée de mon application réelle).

df <- data.frame( date = 1:5, blue = 10, green = c(1,5,11,5,1))
df.m <- melt( df, id = 'date', variable_name = 'type' )
df.m$type <- ordered( df.m$type, c('green', 'blue'))

ggplot(df.m, aes(date,value)) +
  geom_area( aes(fill = type),  position = 'identity', alpha = 0.2) +
  scale_fill_manual ( values = c('green', 'blue') )

enter image description here

comme vous pouvez le voir, la zone" vrai vert "de la parcelle Verte est très petite, de sorte que la couleur de la légende pour green ne correspond pas vraiment à la majorité de la parcelle green . C'est bien sûr le bon comportement par conception, mais je me demande s'il y a un moyen d'obtenir la couleur de légende pour green , et le chevauchement blue+green couleur pour correspondre. Une chose que j'ai essayer de transformer la variable blue à blue - green , puis faire les placettes empilées (avec position = "stack" ). Cela fonctionne presque mais n'est pas tout à fait satisfaisant parce que la couleur sur les dates où la nouvelle variable blue est négative semble étrange.

il existe d'autres moyens pour obtenir les couleurs de la légende de green et la couleur de "chevauchement bleu/vert" afin de correspondre? Peut-être un moyen de spécifier directement les couleurs de la légende? Toute aide apprécié!

4
demandé sur Prasad Chalasani 2011-02-13 04:02:30

1 réponses

Je ne pense pas que définir des couleurs personnalisées dans la légende est possible avec un simple appel dans ggplot2, mais si vous insistez sur la spécification des couleurs, vous pourriez dessiner l'intrigue sans une légende par opts(legend.position = "none") et joindre une légende séparée par exemple. utilisation de grid viewport. Paquet gridExtra pourrait également être une grande ressource pour cette dernière tâche.

2
répondu daroczig 2011-02-13 02:41:39