2016-04-04 4 views
-1

J'ai un tableau avec l'abondance des espèces dans plusieurs échantillons. Je veux faire un diagramme à bulles où dans l'axe des ordonnées j'aurai les différentes espèces, dans l'axe des x les différents échantillons dans lesquels j'ai trouvé ces espèces, pendant que le rayon des bulles suggérera la taille relative des espèces.Tracer un graphique à bulles à partir d'une table en utilisant plusieurs colonnes dans l'axe des x

Ma table est quelque chose comme ceci:

Samples Sample1 Sample2 Sample3 Sample4 Sample5 
Species1 12 25 25 25 25 
Species2 12 23 23 23 23 
Species3 12 21 21 21 21 
Species4 12 19 19 19 19 
Species5 12 17 17 17 17 
Species6 1 15 15 15 15 
Species7 5 13 13 13 13 

Je veux finir avec quelque chose comme ceci:

(http://www.frontiersin.org/files/Articles/141298/fmicb-06-00901-HTML/image_m/fmicb-06-00901-g004.jpg)

+0

Bienvenue sur Stack Overflow! S'il vous plaît lire les informations sur [comment poser une bonne question] (http://stackoverflow.com/help/how-to-ask) et comment donner un [exemple reproductible] (http://stackoverflow.com/questions/ 5963269). Cela rendra beaucoup plus facile pour les autres de vous aider. – zx8754

Répondre

0
x <- read.table(text="Species Sample1 Sample2 Sample3 Sample4 Sample5 
     Species1 12 25 25 25 25 
     Species2 12 23 23 23 23 
     Species3 12 21 21 21 21 
     Species4 12 19 19 19 19 
     Species5 12 17 17 17 17 
     Species6 1 15 15 15 15 
     Species7 5 13 13 13 13", header=TRUE) 

require(reshape2) 
require(ggplot2) 

xm <- melt(x, id.vars = "Species", variable.name="Samples", value.name = "Size") 
str(xm) 

ggplot(xm, aes(x = Samples, y = Species)) + 
    geom_point(aes(size = Size)) + 
    scale_size(range = range(xm$Size)) + 
    theme_bw() 

Note - parce que les premiers noms de colonnes dans les échantillons plutôt que dans les espèces, les étiquettes des axes étaient erronées, aussi le nom de cette colonne a-t-il dû être changé.

Le résultat ressemble à ceci: enter image description here

+0

Merci beaucoup! Cela fonctionne vraiment bien! – KrislilKris