2016-04-23 2 views
0

J'ai essayé de suivre la réponse au lien suivant sans succès. Je dois mentionner que je suis dans un cours d'analyse de données d'entrée de gamme, donc mes compétences R actuelles sont limitées. How to match vector values with colours from a colour ramp in R?.Travailler avec colorramp dans R (diagramme à bulles Rosling Style)

De toute façon, mon problème est que je travaille avec un diagramme à bulles de style Rosling, et les couleurs ne progressent pas correctement. Le graphique présente des données sur les nouvelles alliances et les MIDS de la Chine (différends interétatiques militarisés). Plus précisément, la taille du cercle indique le nombre de MIDS de 1-7. Parce que la zone peut être difficile à discerner j'ai choisi d'utiliser également la couleur afin de mieux distinguer le nombre de MIDS, comme le montre la légende.

La légende montre correctement mon schéma de couleurs, cependant, vous remarquerez peut-être que les cercles de plus grande taille ne sont pas rouge foncé, comme ils devraient l'être, et tous les plus petits cercles ne sont pas la couleur la plus claire. En fait, certains cercles petits et certains grands sont rouge foncé, et il en va de même pour le jaune clair. J'ai mon code et d'autres détails ci-dessous.

MON CODE:

library(RColorBrewer) 
my.colors99 <-colorRampPalette(c("#ffffcc", "#fd8d3c", "#800026"))(8) 
my.design <- my.colors99[ChnData$mids] 

radius1 <- sqrt(ChnData$mids/pi) 


symbols (ChnData$year, ChnData$alliances, 
circles= radius1, inches=.35, 
xlab = "Year", ylab = "New Alliances", 
main = "China's New Alliances (Circles = MIDS)", 
ylim=nrow(ChnData$alliances), 
xlim= nrow(ChnData$year), 
bg = my.colors99) 

legend("topleft", 
legend=c("0", "1", 
"2", "3", 
"4", "5", 
"6", "7"), title= "# of Mids", 
col=my.colors99, pch=19, cex=1, box.col="grey60", 
text.col="grey30") 

Quelques détails sur les couleurs

my.colors99 in R returns: 

"#FFFFCC" "# FEDEA2" "# FDBD79" "# FD9D50"

"# EB7838" "# C75032" "# A3282C" "# 800026"

ChnData$MIDS in R returns: 

"#FFFFCC" "# FEDEA2" "#FFFFCC" "#FFFFCC" "#FFFFCC" "#FFFFCC" "#FFFFCC"
"#FFFFCC" "#FFFFCC" " # FEDEA2 "" #FFFFCC "" #FFFFCC "" #FFFFCC "" #FFFFCC "
" #FFFFCC "" #FFFFCC "" # FDBD79 "" #FFFFCC "" # FEDEA2 "" #FFFFCC "" #FFFFCC "
"#FFFFCC" "#FFFFCC" "#FFFFCC" "#FFFFCC" "# FEDEA2" "# FEDEA2" "# FEDEA2"
"# FDBD79" "#FFFFCC" "# FD9D50" "#FFFFCC" "# FEDEA2 "" #FFFFCC "" #FFFFCC "
" #FFFFCC "" # FD9D50 "" #FFFFCC "" #FFFFCC "" #FFFF CC "" # FEDEA2 "" #FFFFCC "
" # FDBD79 "" #FFFFCC "" # FEDEA2 "" #FFFFCC "" # FEDEA2 "" #FFFFCC "" # FEDEA2 "
" #FFFFCC "" # FDBD79 " "# FD9D50" "# FEDEA2" "#FFFFCC" "# FD9D50" "# EB7838"
"# FDBD79" "# A3282C" "#FFFFCC" "# EB7838" "# EB7838" "# FDBD79" "# FDBD79"
"# C75032" "#FFFFCC" "# FD9D50" "# C75032" "# FD9D50" "# EB7838" "# FDBD79"
"# FD9D50" "#FFFFCC" "#FFFFCC" "# FEDEA2" "# FD9D50" "#FFFFCC" "#FFFFCC"
"#FFFFCC" "# FDBD79" "# FDBD79" "#FFFFCC" "#FFFFCC" "# FEDEA2" "# FEDEA2"
"#FFFFCC" "# FDBD79" "# FDBD79" "# FDBD79" "# FEDEA2" "#FFFFCC" "# FD9D50"
"# FD9D50" "# EB7838" "# FDBD79" "#FFFFCC" "# FEDEA2" "# FDBD79" "# EB7838"
"# FDBD79" "# EB7838" "# FEDEA2" "# FDBD79" "# FEDEA2 " « # FDBD79 » « # EB7838 »

pour moi, il semble que le schéma de couleurs est certainement loin, que je tiens bien évidemment les plus petits cercles, qui représentent le plus bas nombre de mediums pour correspondre à la couleur la plus claire en la palette de rampe, et de foncer à mesure que la taille du cercle augmente.J'espère avoir fourni suffisamment de détails, mais je serai heureux de répondre à vos questions si vous avez besoin de plus de détails. Merci pour l'aide!

myplotgraphic circles small, color scheme correct with 1-mids but legend isnt

Répondre

0

C'est exactement le type de tracé où ggplot2 est beaucoup plus facile à utiliser que les graphiques de base

require(ggplot2) 
ggplot(ChnData, aes(x = year, y = alliances, col = mids, size = mids)) + 
    geom_point() + 
    scale_colour_distiller(palette = "OrRd", direction = -1) + 
    scale_size(range = c(2, 12)) + 
    labs(y = "New Alliances", title = "China's New Alliances (Circles = MIDS)") 

Je soupçonne que le problème avec votre code est que my.colors99[ChnData$mids] ne fait pas ce vous vous attendez. Quand les médiums sont à zéro, ils seront supprimés. Les valeurs restantes seront alors hors de propos.

+0

Merci beaucoup! Cela fait un certain temps que je me bats avec cela et vous vous simplifiez très bien, alors j'apprécie cela. Si cela ne vous dérange pas, comment puis-je changer quelques détails mineurs. Je veux redimensionner tous les cercles (faire size = mids * 10 n'affecte que la légende et pas la taille réelle du cercle) et comment inverser le schéma de couleurs (actuellement, plus de MIDS fait référence à des cercles plus clairs). J'ai essayé col = 1-mids, et cela a fonctionné pour renverser les couleurs, mais a également affecté la légende en faisant toutes les valeurs Je vais avoir de nouvelles photos dans l'OP pour démontrer. – Robborino

+0

a modifié la réponse pour agrandir les tailles et changer la direction de l'échelle de couleurs –