【问题标题】:Function for assigning color to raster为光栅分配颜色的功能
【发布时间】:2015-08-23 20:35:40
【问题描述】:

我试图弄清楚如何在 R 中创建一个函数,我可以在绘制时使用它来设置栅格中单元格的颜色。最终,我将使用绘制的栅格创建这些图的 .gif(我已经弄清楚了那部分),但颜色需要保持一致的绘图才能绘制。即在一个图中分配给值 1 的颜色需要与在下一个图中分配给值 1 的颜色相同。

栅格(至少现在)采用数据框的形式。例如(为了示例,我只是使用随机数,但这就是我的真实数据的格式)

A<-data.frame(x=1:100,y=1:100,value=runif(100, 0, 10000))

B<-data.frame(x=1:100,y=1:100,value=runif(100, 5, 5300))

C<-data.frame(x=1:100,y=1:100,value=runif(100, 8500, 12000))

现在我想为某个范围分配颜色,例如 1-100、101-200 等,以便将 1-100 绘制为白色,然后将 101-200 绘制为蓝色等。理想情况下,一些色带从冷到热的颜色。请注意,A、B 和 C 中的值的范围都是不同的。那就是我需要一个函数,我可以运行每个数据帧,为相同的值范围产生相同的颜色。

现在如果我绘制这三个数据框

library(ggplot2)

ggplot() + geom_tile(data=A, aes(x=x, y=y, fill=value)) + scale_fill_gradient(low="blue", high="red")

ggplot() + geom_tile(data=B, aes(x=x, y=y, fill=value)) + scale_fill_gradient(low="blue", high="red")

ggplot() + geom_tile(data=C, aes(x=x, y=y, fill=value)) + scale_fill_gradient(low="blue", high="red")

颜色范围保持不变,但值范围不变。我需要一个可以在 A、B 和 C 上运行并获得相同“每个值的颜色”或“每个值范围”的函数

谢谢!

【问题讨论】:

  • 您可以设置色标的限制,和/或必要时的中断,scale_fill_gradient(low="blue", high="red", lim=c(0,2e4))

标签: r plot colors


【解决方案1】:

我的诀窍是组合您的数据集并创建一个包含数据集名称的新列。然后,您可以根据这些组创建图例(常见图例),但为每个数据集创建一个图。

library(ggplot2)
library(dplyr)

A<-data.frame(x=1:100,y=1:100,value=runif(100, 0, 10000), name="A")

B<-data.frame(x=1:100,y=1:100,value=runif(100, 5, 5300), name="B")

C<-data.frame(x=1:100,y=1:100,value=runif(100, 8500, 12000), name="C")

dt = rbind(A,B,C)

# create 10 groups based on value column (based on general quantiles)
dt = dt %>% mutate(group = ntile(value,10))

# see min and max for each group
dt %>% group_by(group) %>% summarise(min= min(value),
                                     max= max(value),
                                     N= n())

# common legend and one plot for each dataset (name)
ggplot() +
  geom_tile(data=dt, aes(x=x,y=y,fill=group)) +
  scale_fill_gradient(low="blue", high="red") +
  facet_grid(~name)

【讨论】:

    猜你喜欢
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    相关资源
    最近更新 更多