2017-01-05 1 views
1

Je suis récemment en train d'essayer d'analyser mes données et je veux rendre les graphiques un peu plus agréable, mais je ne suis pas d'accord. Donc, j'ai un ensemble de données avec 144 sites et 5 variables d'environnement.R: PCA plot avec des couleurs différentes pour les sites

Il s'agit essentiellement de la composition du substrat autour d'une île et de l'abondance du poisson. Sur cette île, on suppose qu'il y a une différence dans la composition du substrat entre le nord et le sud. En ce moment je fais un pca et avec la fonction biplot cela fonctionne très bien, mais je voudrais changer un peu l'intrigue. J'ai besoin d'un où les sites sont juste des points et non numérotés, les flèches pointent vers la variable différente et les sites sont colorés selon leur emplacement (nord ou sud). J'ai donc essayé tout ce que je pouvais trouver.

La plupart des exemples où les données de dunes et ont suggéré quelque chose comme ceci:

library(vegan) 
library(biplot) 
data(dune) 
mod <- rda(dune, scale = TRUE) 
biplot(mod, scaling = 3, type = c("text", "points")) 

Ainsi, selon ce que je voudrais juste besoin de dire le texte et les points et R étiquetterait les variables et juste faire des points pour les sites . Quand je fais ceci, cependant j'obtiens l'erreur:

Error in plot.default(x, type = "n", xlim = xlim, ylim = ylim, col = col[1L], : 
    formal argument "type" matched by multiple actual arguments 

Aucune idée comment contourner ceci.

Alors, la prochaine stratégie que je trouve, est de faire un terrain comme celui-ci manuellement:

require("vegan") 
data(dune, dune.env) 
mod <- rda(dune, scale = TRUE) 
scl <- 3 ## scaling == 3 
colvec <- c("red2", "green4", "mediumblue") 
plot(mod, type = "n", scaling = scl) 
with(dune.env, points(mod, display = "sites", col = colvec[Use], 
         scaling = scl, pch = 21, bg = colvec[Use])) 
text(mod,display="species", scaling = scl, cex = 0.8, col = "darkcyan") 
with(dune.env, legend("bottomright", legend = levels(Use), bty = "n", 
         col = colvec, pch = 21, pt.bg = colvec)) 

Cela fonctionne bien pour autant que bien, je reçois des couleurs différentes et des points, mais maintenant les flèches sont manquantes. Donc, je trouve que cela devrait être corrigé facilement, si je viens juste "display="bp" pb « R dit" dans la ligne de texte, mais ce travail soit chaque fois que je Indifférent Fume mets.. »:

Error in match.arg(display) : 
    argument "display" is missing, with no default 

Donc je suis genre maintenant désespérée. Je regardé à travers toutes les réponses ici et je ne pas comprendre pourquoi display="bp" et type=c("text","points") ne fonctionne pas pour moi.

Si quelqu'un a une idée je serais super reconnaissant. https://www.dropbox.com/sh/y8xzq0bs6mus727/AADmasrXxUp6JTTHN5Gr9eufa?dl=0 C'est le lien vers mon dossier "dropbox" contient mon R-script et les fichiers csv, le fichier environmentvariables_Kon1 contient aussi les données sur le nord et le thside.

Alors ouais ... si quelqu'un pouvait m'aider. Ce serait génial. Je ne sais vraiment plus quoi faire.

Meilleures salutations, Nancy

Répondre

0

Vous pouvez ajouter des flèches avec arrows(). Voir le code pour vegan:::biplot.rda pour voir comment cela fonctionne dans la fonction d'origine.

Avec votre parcelle, ajoutez

g <- scores(mod, display = "species") 
len <- 1 
arrows(0, 0, len * g[, 1], len * g[, 2], length = 0.05, col = "darkcyan") 

enter image description here

Vous pouvez ajuster la valeur de len pour rendre les flèches plus