我正在将数据绘制在从两个不同来源获得的地图上。我想并排绘制这些图形(使用facet_wrap
),以便可以轻松地将源文件相互比较,并且我正在使用ggplot函数stat_summary_hex
创建六边形。
如果我的数据框df
包含四个变量lon
,lat
,score
和source
,我的代码可能看起来像这样:
world_map <- map_data('world')
ggplot(df) + aes(x = lon, y = lat, z = score) +
coord_cartesian(xlim = c(-5, 10), ylim = c(45, 60)) +
stat_summary_hex(binwidth = c(.7, .5), fun = median) +
geom_map(dat = world_map, map = world_map, inherit.aes = FALSE,
mapping = aes(map_id = region), fill = 'white', color = 'black') +
facet_wrap( ~ source, ncol = 2) +
theme(legend.position = 'top') + labs(x = '', y = '')
我遇到的问题是,分别为左右图生成了bin,并且由于数据具有不同的范围,因此bin不会对齐。这使得比较绘图变得更加困难。有什么办法可以迫使垃圾箱对齐吗?
我知道在geom_histogram
中可以设置center
或boundary
参数。 stat_summary_hex
中没有这样的参数,所以也许我可以摆弄数据范围之类的东西?我正在使用coord_cartesian
,所以也许可以在我绘制的区域之外添加一个“假”数据点以将垃圾箱强制到某个位置?
我将共享一个数据示例,但无法共享我实际使用的数据。我可以创建一些虚假数据,但我认为(希望)这个问题可以理解。
这是情节:
(不要太分散颜色-正常的汇总功能将返回连续的比例尺,但是我正在使用自定义的比例尺来返回离散的比例尺。)