2017-10-10 2 views
0

Je suis nouveau à R, donc mon problème est simple. J'essaie de créer un nuage de points qui montre des données sur tous les pays, puis de dimensionner les bulles par population et de les colorier par région. J'ai tout accompli sauf la coloration. Voici mon code:Coloration Points de données par variable catégorielle

attach(gapminder2) 
colors(distinct = FALSE) 
radius<-sqrt(gapminder2$Population/pi) 
plot(log(`CO2 Emissions per capita`), log(Income), main="PerCapita GDP vs CO2 Emissions by Country", xlab="CO2 Emissions (tons/person)", ylab="Per Capita GDP (US$)") 
grid() 
symbols(log(`CO2 Emissions per capita`), log(Income), main="PerCapita GDP vs CO2 Emissions by Country", xlab="CO2 Emissions (tons/person)", ylab="Per Capita GDP (US$)", circles=radius, inches=0.25) 

Tout cela fonctionne très bien et produit le graphique suivant:

GDP vs CO2 graph

Dans l'ensemble de données (appelé "gapminder2"), j'ai une variable "Région" . J'ai essayé de le convertir en une variable factorielle (Région < - as.factor) mais je ne sais toujours pas comment attribuer à chaque région sa propre couleur sur le graphique (j'ai 8 régions différentes).

+0

Voir [cette réponse] (https://stackoverflow.com/questions/7721262/colouring-plot-by -facteur-en-r). Essayez d'ajouter ajouter 'col = gapminder2 $ Region' à' plot' – blondeclover

+0

Ok, j'ai ajouté cela, mais j'ai reçu le message d'erreur: "nom de couleur invalide 'Moyen-Orient'". Savez-vous comment je pourrais attribuer les couleurs à chaque région dans la variable? @blondeclover –

+0

Le fait que cela n'ait pas fonctionné suggère que gapminder2 $ Region n'est pas stocké en tant que facteur. Essayez de faire 'gapminder2 $ Region <- as.factor (gapminder2 $ Region)', puis utilisez la solution @blondeclover. –

Répondre

0

Vous pouvez le faire en une seule commande de terrain, en utilisant certains des paramètres graphiques:

plot(
    log(`CO2 Emissions per capita`), 
    log(Income), 
    pch=16, ## filled in circles 
    cex=radius, ## varies the size, 
    col=as.integer(as.factor(Region)+1) ## colour by region, skipping black 
)