2016-04-23 1 views
0

Я пробовал ответить на следующую ссылку без успеха. Я должен упомянуть, что я нахожусь на начальном уровне Data Analysis Course, поэтому мои текущие навыки R ограничены. How to match vector values with colours from a colour ramp in R?.Работа с colorramp в R (диаграмма пузырьков стиля Рослинга)

В любом случае, моя проблема в том, что я работаю с диаграммой пузырьков в стиле Рослинга, и цвета не растут правильно. На графике представлены данные о новых альянсах Китая и MIDS (военизированные межгосударственные споры). В частности, размер круга указывает # из MIDS от 1 до 7. Поскольку область может быть трудно распознать, я также решил использовать цвет, чтобы лучше отличить # MIDS, как показывает Legend.

В легенде корректно отображается моя цветовая схема, однако вы можете заметить, что круги большего размера не являются глубокими красными, как и должно быть, и не являются самыми маленькими кругами самого легкого цвета. Фактически, некоторые маленькие и некоторые крупные круги темно-красные, и то же самое верно для светло-желтого. У меня есть код и другие подробности ниже.

МОЙ КОД:

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") 

Некоторые подробности о цветах

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" "# FDDID2 "" # FFFEA2 "
" #FFFFCC "" # FDBD79 "###################################################################################################################################################### "# FDBD79" "# FDBD79" "# FEDEA2" "#FFFFCC" "# FD9D50"
"# FD9D50" "# EB7838" "# FDBD79" "#FFFFCC" "# FEDEA2" "# FDBD79" "# EB7838"
"# FDBD79" "# EB7838" "# FEDEA2" "# FDBD79" "# FEDEA2 "„# FDBD79“„# EB7838“

Мне кажется, что цветовая схема, конечно, от, как я, конечно, хочу наименьшие круги, которые представляют собой самый низкий # из СЧ, чтобы соответствовать самым светлым цветом в палитру рампы и затемнить по мере увеличения размера круга.Надеюсь, я предоставил достаточно подробностей, но буду рад ответить на любые вопросы, если вам нужна дополнительная информация. Спасибо за помощь!

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

ответ

0

Это именно тот тип участка, где ggplot2 намного проще в использовании, чем базовые графики

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)") 

Я подозреваю, что проблема с вашим кодом, что my.colors99[ChnData$mids] не делать то, что вы ожидаете. Когда mids равна нулю, он будет удален. Остальные значения будут неуместны.

+0

Спасибо вам большое! Я немного борюсь с этим, и вы очень упростились, поэтому я ценю это. Если вы не возражаете, как я могу изменить несколько мелких деталей. Я хочу масштабировать все круги больше (делая size = mids * 10 влияет только на легенду, а не на фактический размер круга) и как мне изменить цветовую схему (в настоящее время больше MIDS относится к более светлым, а не к темным кругам). Я попробовал col = 1-mids, и это сработало для переливания цветов, но также повлияло на легенду, сделав все значения. У меня будут новые фото в OP, чтобы продемонстрировать. – Robborino

+0

отредактировал ответ, чтобы увеличить размеры и изменить направление цветовой шкалы –

Смежные вопросы