我有一个GIS栅格数据框,我想用六角形图块绘制。使用tile_geom()的标准方法很简单:
ggplot(raster_df, aes(x, y, fill=blabla)) + geom_tile()
然而,我真的希望我的光栅点显示为六角形,而不是因为美学原因而显示。最终结果应该类似于这篇博文:http://www.statsblogs.com/2014/09/02/how-to-create-a-hexagonal-bin-plot-in-sas/
我尝试使用geom_hex()而不是geom_tile(),但由于geom_hex()似乎是考虑到binning,我无法弄清楚如何破解它来显示我的数据。我希望每个光栅点对应一个十六进制,即根本没有binning!
感谢您的任何建议。
编辑:根据要求,这是一个示例数据栅格(它实际上非常接近我正在使用的栅格,因为我想根据自定义统计信息绘制世界地图并为每个栅格点着色)
library(maptools)
library(raster)
library(ggplot2)
data('wrld_simpl')
raster_df <- as.data.frame(rasterToPoints(rasterize(wrld_simpl, raster(res=5))))
raster_df$blabla <- rnorm(nrow(raster_df))
答案 0 :(得分:1)
看起来好像这可能是由于geom_hex
中ggplot2
的实施所致。我已经使用了这个包几年了,我的第一个猜测是尝试:
ggplot(raster_df, aes(x, y, fill=blabla)) + geom_hex(stat="identity")
但这会引发错误:
Error in ggplot2:::hexGrob(x = raster_df$x, y = raster_df$y, fill = raster_df$blabla) :
could not find function "hexcoords"
所以我查找了hexcoords
包中显示的函数hexbin
。我明确加载该包并再试一次:
library(hexbin)
ggplot(raster_df, aes(x, y, fill=blabla)) + geom_hex(stat="identity")
这很有效。结果不是特别漂亮,所以最好直接使用hexbin
包。
似乎没有geom_hex()设计为直接将数据绘制为六边形而没有stat = "binhex"
的临时步骤,这与许多其他geom_
函数不同。