保持调色板之间的颜色不变

时间:2014-06-26 06:37:50

标签: r ggplot2 ggmap color-palette

我需要比较两个相同数量的地图,我想在两个图中保持调色板不变,以便于理解,但看起来我不知道怎么做。

我应该设置限制(例如,所有分配给低和最高等级的地块之间的最小值是多少?)

有一种简单的方法吗?

我是新手,很抱歉,如果解决方案是平庸的,我会浏览很多博文,但看起来我找不到任何东西。

我的代码:

fin<-get_map("Helsinki",zoom=12)
    ggmap(fin, legend="bottom")+
        geom_polygon(data=a,aes(x=a$long,y=a$lat, id=id, fill=Test_statistics), alpha=0.1, colour="white")

为了给你一个想法,这是一张图片

animage

这是另一个

another

根本不清楚! 图像仍然需要一点“漂亮”,这只是给出一个想法

基本上我想要的是this question,但对于离散(因子)值

2 个答案:

答案 0 :(得分:2)

我无法重现您的情节,因为您没有向我们提供数据,但在limits中设置scale_colour_gradient应该有效。参见:

http://docs.ggplot2.org/0.9.3.1/scale_gradient.html

在“调整规模限制”(第二个例子)下,哈德利说:

  

手动设置限制在制作时也很有用   需要比较的多个图

例如(我在这里使用点是为了简单 - 您可能必须使用scale_fill_gradient来设置多边形的填充颜色 - 我没有时间构建一些多边形):

> set.seed(310366); d=data.frame(x=runif(20),y=runif(20),
  z1=rnorm(20), z2=rnorm(20)+5)

请注意z1的范围约为-1到1,而z2的范围是4到7.这有助于我们看到效果。

> ggplot(d,aes(x=x,y=y,col=z1))+geom_point(size=8) +
    scale_colour_gradient(limit=range(c(d$z1,d$z2))

> ggplot(d,aes(x=x,y=y,col=z2))+geom_point(size=8) + 
    scale_colour_gradient(limit=range(c(d$z1,d$z2)))

在调色板图例上生成两个具有相同限制的图,但是第一个图具有非常暗的点,因为值都是低(-1到1),而第二个图大多是浅色,因为值都很高( 4到7)。

由于scale_colour_gradient函数中的limit参数,两组点都使用相同的颜色到颜色的映射进行着色。您正在映射fill属性,因此我认为您需要scale_fill_gradient

答案 1 :(得分:0)

我没有完全解决您的问题,但请尝试将其添加到您的所有图表中。然后颜色代码应该是统一的。

+scale_colour_brewer(pallette="Set1")

您可以添加示例中显示的任何调色板 http://www.cookbook-r.com/Graphs/Colors_(ggplot2)/#color-charts