2010-06-24 5 views
2

De nombreuses heures de fouilles maniaques et feuilletant la documentation de ggplot2 ne m'ayant pas rapproché, j'espérais que quelqu'un pourrait peut-être me pousser dans la bonne direction.Gigue parcelle dans ggplot2, couleur par 1 variable, nuance de couleur par une autre variable?

Je contiennent des données de comptage de cellules pour quelques milliers de sujets dans un data.frame avec la mise en page suivante:

  • 1 sujet par ligne.
  • 1 colonne par type de cellule (5 totaux, chacun contenant le pourcentage de ce type de cellule, somme de 100%).
  • 2 colonnes supplémentaires, un pour indiquer ce groupe (expérimental ou de contrôle) les sujets appartiennent, 1 pour indiquer quelle expérience ils appartiennent à (1, 2, 3, 4, etc.)

Je Comme pour générer un tracé de gigue ggplot2, pourcentage le long de l'axe Y, les catégories de type de cellule le long de l'axe des X (5 au total) et colorer davantage les points de données en fonction de leur groupe (expérimental ou contrôle). Ce serait génial si je pouvais encore colorier les points de données de différentes expériences dans les nuances de la couleur du groupe (ie type de l'expérience de définir un gradient de la lumière à l'obscurité - tous les points de l'expérience 1 seraient légers - rouges ou bleus basés sur quel groupe ils appartenaient à), mais je ne sais pas si c'est même possible.

Pour commencer: mes données sont-elles correctement disposées pour tenter de créer cette intrigue? La raison pour laquelle je demande est que je me bats comme si je luttais avec ggplot2 pour essayer d'obtenir quelque chose avec le data.frame dans sa configuration actuelle (mais le natif boxplot() semble fonctionner correctement avec très peu de modifications ...)

Toute aide ou nudges dans la bonne direction serait grandement appréciée.


EDIT:

Ceci est la sortie de dput(head(dat, 10)).

structure(list(Neutrophils = c(38, 70.7, 62.1, 90.5, 65.8, 39.2, 
89.4, 91.3, 55.4, 14.5), Lymphocytes = c(47.5, 17.1, 20.3, 2, 
25, 37.1, 6.3, 1.6, 31.3, 61.5), Monocytes = c(12.4, 11.8, 14.6, 
4.8, 7.3, 14.1, 3.7, 4.6, 8.4, 21.9), Eosinophils = c(1.4, 0.1, 
2.5, 2.4, 1.4, 9.2, 0.1, 2.5, 4.6, 1.3), Basophils = c(0.8, 0.3, 
0.5, 0.3, 0.5, 0.4, 0.5, 0, 0.3, 0.8), Group = c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("Neutrophils", "Lymphocytes", 
"Monocytes", "Eosinophils", "Basophils", "Group"), row.names = c("B145", 
"B196", "B212", "B246", "B250", "B286", "B343", "B355", "B369", 
"B386"), class = "data.frame") 
+0

Un bon moyen d'obtenir de l'aide consiste à fournir des exemples de données. Si vos données sont nommées dat, vous pouvez publier le résultat de dput (head (dat, 20)) –

Répondre

1

Vous devez d'abord de remodeler vos données en utilisant la fonction melt dans le package reshape.

Je suis sûr que quelqu'un trouvera une façon plus élégante de colorer des points sur un dégradé, mais vous pouvez le faire manuellement en créant une nouvelle colonne avec les couleurs correspondant au groupe et/ou à l'expérience. Puis mappez cette couleur esthétique à cette colonne.

+0

Wow, je suis vraiment étonné de voir à quel point ça m'a été utile. Merci beaucoup.Melt fait à peu près ce que j'avais essayé de faire (sans succès) pendant quelques heures maintenant - à savoir réorganiser le data.frame en un format qplot serait content. Encore besoin de comprendre la couleur, mais je pense que cela devrait être plus facile maintenant que je vois la mise en page «fondu». – cashoes

+0

La coloration est également possible, je pense. Créez d'abord un ensemble de couleurs mappées à vos expériences (disons que vous avez 3 expériences). couleurs = cbind (couleurs = c ("rouge", "bleu", "jaune"), expérience = 1: 3) expérience ensuite fusionner que votre ensemble de données new_data = fusion (données, couleurs, par = " ") Vous pourriez rendre cette étape précédente plus compliquée en ayant un groupe par expérience. Maintenant, dans ggplot, il suffit de spécifier les couleurs = couleur dans le cadre de l'esthétique. exemple: ggplot (données, aes (x = cellule, y = valeur, couleurs = couleurs)) – Maiasaura

0

Ce serait génial si je pouvais avancer couleur les points de données de différentes expériences dans les tons de la couleur du groupe (numéro expérience type de définissant un gradient de la lumière à l'obscurité - tous Experiment-1 les points seraient légers - soit rouges ou bleus sur la base de auquel ils appartenaient), mais je ne sais pas si c'est possible.

Actuellement pas, désolé.

+0

Ah, eh bien il va le dernier obstacle que j'étais contre - je suppose que je pourrais créer une parcelle par expérience et les superposer, en utilisant des nuances claires à foncées des deux couleurs de groupe dans les parcelles successives pour obtenir un résultat similaire? – cashoes

+0

Pourquoi ne pas simplement utiliser la forme? Ou vous pouvez créer votre propre jeu de couleurs avec le manuel de la gamme de couleurs. – hadley

+2

Comment utiliser l'alpha transparancy? Juste besoin de mettre à l'échelle le nombre de test de manière appropriée (diviser par le maximum devrait être bien) – James

Questions connexes