【问题标题】:Working with colorramp in R (Rosling Style bubble chart)在 R 中使用 colorramp(罗斯林风格气泡图)
【发布时间】:2016-08-17 10:16:01
【问题描述】:

我尝试按照以下链接中的答案进行操作,但没有成功。我应该提一下,我正在上入门级数据分析课程,所以我目前的 R 技能是有限的。 How to match vector values with colours from a colour ramp in R?.

无论如何,我的问题是我正在使用 Rosling 风格的气泡图,并且颜色没有正确渐变。该图描绘了有关中国新联盟和 MIDS(军事化的州际争端)的数据。具体来说,圆圈大小表示从 1 到 7 的 MIDS 数。因为区域可能难以辨别,所以我选择使用颜色来更好地区分 MIDS 的#,如图例所示。

图例正确显示了我的配色方案,但是,您可能会注意到较大的圆圈不是深红色,因为它们应该是深红色,也不是所有最小的圆圈都是最浅的颜色。事实上,一些小圆圈和一些大圆圈是深红色的,浅黄色也是如此。我在下面有我的代码和其他详细信息。

我的密码:

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" "#FFFFCC" "#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"

在我看来,配色方案肯定是关闭的,因为我当然想要最小的圆圈,它代表最低的中间 # 对应于渐变调色板中最亮的颜色,并随着圆圈大小的增加而变暗.希望我提供了足够的细节,但如果需要更多细节,我很乐意回答任何问题。感谢您的帮助!

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

【问题讨论】:

    标签: r colors bubble-chart


    【解决方案1】:

    这正是 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 为零时,它将被丢弃。其余的值将不合适。

    【讨论】:

    • 非常感谢!我一直在为此苦苦挣扎,您的简化非常好,所以我很感激。如果你不介意,我怎么能改变一些小细节。我想将所有圆圈放大(做 size = mids*10 只影响图例而不影响实际圆圈大小)以及如何反转配色方案(目前更多的 MIDS 是指较浅的圆圈,而不是较暗的圆圈)。我尝试了 col = 1-mids,这对翻转颜色很有用,但也影响了图例,因为我将在 OP 中有新图片来演示。
    • 编辑答案以使尺寸变大并改变色标的方向
    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多