【发布时间】:2011-07-18 19:14:24
【问题描述】:
我正在按照ggplot2 wiki 中的说明创建地图(等值线)。一切都像一个魅力,除了我遇到了一个问题,通过 scale_fill_brewer() 函数将连续值映射到多边形填充颜色。
This question 描述了我遇到的问题。正如答案一样,我的解决方法是使用 gtools quantcut() 函数将我的数据预先剪切到 bin 中:
更新:第一个示例实际上是正确的方法
require(gtools) # needed for quantcut()
...
fill_factor <- quantcut(fill_continuous, q=seq(0,1,by=0.25))
ggplot(mydata) +
aes(long,lat,group=group,fill=fill_factor) +
geom_polygon() +
scale_fill_brewer(name="mybins", palette="PuOr")
这行得通,但是,我觉得我应该能够跳过预剪切数据的步骤,并使用中断选项执行类似的操作:
ggplot(mydata) +
aes(long,lat,group=group,fill=fill_continuous) +
geom_polygon() +
scale_fill_brewer(names="mybins", palette="PuOr", breaks=quantile(fill_continuous))
但这不起作用。相反,我收到类似以下的错误:
提供给离散 scale_brewer 的连续变量(综合得分)。
我是否误解了“休息”选项的目的?还是断了?
【问题讨论】:
-
正如错误所说,
scale_fill_brewer用于离散数据,而不是连续数据。 -
感谢 Hadley,感谢您的回答和编写程序包。我想我假设连续数据+中断=离散。这是否意味着我的第一个示例(预先切割我的连续数据)是执行此操作的“正确”方法?
-
是的。图例与轴没有什么不同 - 在轴上设置中断不会使数据离散,它只是移动刻度线。
-
非常感谢您的解释。我不敢相信你回答了多少关于 ggplot2 的问题——你得到了我对开源 MVP 的投票。