【问题标题】:Plotting colours in R according to values根据值在 R 中绘制颜色
【发布时间】:2015-07-27 11:23:55
【问题描述】:

我有一个包含 X、Y、VALUE 列的数据框。我正在使用 ggplot2 在指定坐标处绘制值。但我希望根据 VALUE 列的自定义范围填充颜色。例如:

VALUE    COLOUR
0 to 2    blue
2 to 5    green
5 to 10   red
10 to 20  yellow
20 to 30  orange
30 to 40  grey
>40       black

如何使用 ggplot2 为特定值填充特定颜色?

如果需要,我可以重新采样我的数据,然后将单独的重新采样值映射到颜色,例如:

VALUE    RESAMPLED VALUE    COLOUR
0 to 2        10             blue
2 to 5        20             green
5 to 10       30             red
10 to 20      40             yellow
20 to 30      50             orange
30 to 40      60             grey
>40           70             black

但是这些值并没有通过这段代码映射到颜色:

ggplot2::ggplot() + ggmap::theme_nothing() +
ggplot2::geom_tile(data = xyDataFrame, alpha = 0.6, aes(x = X, y = Y, fill=VALUE)) + 
ggplot2::scale_fill_gradientn(colours = c("blue", "green", "red", "yellow", "orange", "grey", "black"))

【问题讨论】:

    标签: r


    【解决方案1】:

    您可能应该使用cut 在您的数据框中添加一个额外的变量。

    DATA$COLOUR <- cut(DATA$VALUE, c(0, 2, 5, 10, 20, 30, 40, Inf),
        c("blue", "green", "red", "yellow", "orange", "grey", "black"))
    

    【讨论】:

    • 感谢本杰明的回复。在您的评论中使用 cut 函数后,我尝试绘制以下内容: ggplot2::geom_tile(data = xyDataFrame, alpha = 0.6, aes(x = x, y = y, fill=COLOUR)) 这似乎为绘图着色根据正确的范围,但颜色不是我想要的颜色,而是在绘图上放置了一些其他颜色。
    • ggplot2::ggplot() + ggmap::theme_nothing() + ggplot2::geom_tile(data = xyDataFrame, alpha = 0.6, aes(x = X, y = Y, fill=COLOUR))这个是cut函数后的正确用法吗
    • 哦。正确的。这每次都咬我。 ggplotCOLOUR 视为一种美学。您还需要更改填充比例。 scale_fill_manual(value = c("blue", "green", "red", "yellow", "orange", "grey", "black")) 应该让你进入正确的球场。您可能需要重新排列颜色的顺序,具体取决于 cut 订购您的因素的方式。
    • 太棒了。完美运行!非常感谢 :) ggplot2::ggplot() + ggmap::theme_nothing() + ggplot2::geom_tile(data = xyDataFrame, alpha = 0.6, aes(x = x, y = y, fill=COLOUR)) + scale_fill_manual(values = c("blue", "green", "red", "yellow", "orange", "grey", "black"))
    • 面临此解决方案的问题。如果在任何特定范围内没有数据,则该图将使用其颜色为下一个可用范围着色。因此,在我的情况下,如果 0 到 2 没有数据,则绘图将 2 到 5 着色为蓝色。
    猜你喜欢
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多