【发布时间】: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))