Suite

Comment tracer certaines valeurs d'une colonne dans R?


Disons que nous avons un shapefile de villes avec une colonne appelée catégorie

[email protected]ées

catégorie A B A C A A B C

Comment puis-je tracer la catégorie A uniquement, etc.?

A essayé

c<-cities$category[A] plot(c)

mais n'était pas correct.


Il semble que vous vouliez sous-ensemble vos données et le traçage est secondaire. Veuillez garder à l'esprit qu'il n'est pas toujours nécessaire de créer un nouvel objet. Si vous souhaitez uniquement tracer des sous-ensembles de données, il est beaucoup plus efficace de suivre les conseils de @fdetsch et de sous-ensemble dans l'appel à tracer. Voici quelques exemples de sous-ensemble et de traçage de données de classe sp à l'aide de l'ensemble de données meuse.

library(sp) data(meuse) coordinates(meuse) <- ~x+y str([email protected]) # sous-ensemble des données et création d'un nouvel objet basé sur la requête de colonne meuse.s1 <- meuse[meuse$soil == "1" ,] plot(meuse.s1, pch=20) # Tracer au-dessus du sous-ensemble sans créer de nouvel objet plot(meuse[meuse$sol == "1" ,], pch=20)

Voici comment parcourir chaque classe et tracer le sous-ensemble

# définir les couleurs en fonction du nombre de valeurs meuse.col = topo.colors(nlevels(meuse$sol)) # définir le tracé de sorte qu'il soit 2x2 dans un seul tracé canvas par(mfrow=c(2,2))

Il est l'endroit où vous définissez la boucle for où "i" est la valeur de l'itérateur pour 1 à nlevels dans la variable (c'est-à-dire 1,2,3). La fonction de tracé est un sous-ensemble de chaque niveau de facteur (c.-à-d. niveaux(meuse$sol)[i]). La colonne du sous-ensemble n'a pas besoin d'être un facteur. Vous pouvez utiliser unique() pour renvoyer le nombre de valeurs uniques et itérer sur cette valeur plutôt que d'utiliser level() et nlevels().

Les arguments supplémentaires dans plot (c'est-à-dire, g pch, col) sont des paramètres graphiques pour le type et la couleur du symbole de point. La boîte et le titre sont des fonctions pour le tracé qui mettent une limite et placent un titre sur chaque tracé. Vous pouvez afficher de l'aide pour tous les paramètres graphiques en utilisant ?par. J'utilise paste () dans title () pour créer une chaîne de "classe de sol: i" pour le titre de la parcelle.

for(i in 1:nlevels(meuse$sol)) { plot(meuse[meuse$sol == niveaux(meuse$sol)[i] ,], pch=20, col=meuse.col[i]) box( ) title(paste("Classe de sol : ", niveaux(meuse$sol)[i],)) }

Je voudrais souligner qu'une façon de comprendre et de digérer les exemples de code est de les décomposer et de ne pas nécessairement regarder le code dans son ensemble, car cela peut être déroutant. Un exemple est la façon dont je traite les niveaux. S'il y a une variable définie dans une boucle, vous pouvez la définir manuellement (c'est-à-dire, i=1). Ensuite, vous pouvez séparer un code spécifique dans la boucle. Pour comprendre les détails, vous pouvez exécuter uniquement les commandes et voir ce qu'elles renvoient.

Tout d'abord, examinons les données et les classes.

str([email protected]) classe([email protected]$sol)

Vous verrez que [email protected] est un objet data.frame avec 8 colonnes numériques et 4 colonnes factorielles incluant le sol, qui contient 3 niveaux (valeurs uniques). Maintenant, nous pouvons voir ce que le code fait réellement.

nlevels(meuse$sol)levels(meuse$sol)levels(meuse$sol)[i] paste("Classe de sol : ", levels(meuse$sol)[i],)

C'est généralement une bonne pratique car non seulement cela vous aide à apprendre comment fonctionne le code, mais cela vous permet également de tester votre propre code pour vous assurer qu'il fait ce que vous pensez qu'il est. Un bon exemple consiste à s'assurer que la coercition aboutit au type/classe d'objet souhaité.