【问题标题】:keep colour palette constant between plots在绘图之间保持调色板不变
【发布时间】:2014-06-26 06:37:49
【问题描述】:

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

我是否应该设置限制(例如,所有地块之间的最小值被分配到低和最高级别到高?)

有没有简单的方法?

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

我的代码:

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")

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

这是另一个

一点都不清楚! 图片还是需要一点“美化”的,只是给个思路

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

【问题讨论】:

  • 您能否向我们提供a 或类似的东西,以制作我们可以剪切/粘贴并用作答案基础的示例?
  • 现在清楚了吗?我在简化这些数据方面遇到了一些问题,但即使没有它们,问题也应该很清楚。至少希望如此。
  • 如果您计算要映射的所有数据集中的数据范围,并将其放入比例函数的限制参数中。看我的回答。
  • 离散(因子)值如何?您的地图显示来自数值变量的连续色标!这就是为什么我们喜欢可重复的例子!

标签: r ggplot2 ggmap color-palette


【解决方案1】:

我无法重现您的绘图,因为您没有向我们提供数据,但在 scale_colour_gradient 中设置 limits 应该可以。见:

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 函数中的限制参数,两组点都使用相同的值到颜色映射进行着色。您正在映射填充属性,所以我认为您需要scale_fill_gradient

【讨论】:

  • 今天早上我以为你完全正确,但再次查看数据我有疑问。如您共享的文档中所述,恐怕设置“限制”只是不绘制低于最小值和高于最大值的值,事实上,即使使用 scale_fill_gradient 调色板也不相同,因为它们单独适应单个图形“跨度”。我错了吗?如果不是,我的问题现在清楚了吗?
  • 用例子做了一点修改。
  • 我错了,你是对的,非常感谢你的帮助。对此,我真的非常感激。现在真的很清楚和坚定:)
【解决方案2】:

我没有完全理解您的问题,但请尝试将其添加到您的所有情节中。那么颜色代码应该是统一的。

+scale_colour_brewer(pallette="Set1")

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

【讨论】:

  • 我认为 OP 希望数字与不同地图上数据框中不同列的颜色完全匹配。 ggplot 会将调色板拉伸到数据范围。请参阅基本图像函数中的 zlim arg 以了解使用图像函数的方法。 scale_colour_manual 可能是使用 ggplot 的方式...
  • @Spacedman 你可能是对的,我正在经历它,不知道它的存在。我会尽快回复你,谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
相关资源
最近更新 更多