我想改变用stat_summary_2d创建的点的大小,目前它们都是相同的大小,没有提供信息。我通常会使用geom_point(),但是因为我希望这些点位于其正确的bin中心,这是不合适的,它们相对于bin中心的位置不一致所以偏移也不起作用。
与创建积分相关的代码是:
stat_summary_2d(data = filter(ni_eff, fishyear %in% c('2013', '2014', '2015', '2016') & coverage),
mapping = aes(x = start_long, y = start_lat, z=event_key),
binwidth = c(1, 1),
geom = 'point',
colour = 'red',
shape = 1,
# size = event_key,
fun = n_distinct) +
Stat_summary_2d不喜欢美学中的大小,如果输入确定大小,也无法识别event_key。我认为它应该是可能的,但没有弄清楚如何,所以任何帮助将不胜感激。
最终,我希望以1 * 1度纬度为中心的分箱为中心,这些分箱的大小会因数据帧内的列event_key及其坐标而变化。
答案 0 :(得分:1)
与适用答案类似的问题:
Map with geom_bin2d overlay with additional stat info
申请我的代码:
point_df <- ggplot(filter(ni_eff, fishyear %in% c('2013', '2014', '2015', '2016') & coverage),
aes(x = start_long, y = start_lat)) +
stat_summary_2d(aes(z = event_key), binwidth = c(1, 1), fun = length)
df <- ggplot_build(point_df)$data[[1]]
使用geom_point()
和ggplot_build()
geom_point(data = df, aes(x = x, y = y, size = value),
colour = "red", shape = 1)
答案 1 :(得分:0)
您可以在不使用stat_summary2d()
的情况下手动添加点数,然后使用position_nudge
调整位置,使点居中。例如:
df = data.frame(a = 1:10, b = 1:10, c = 1:10)
d <- ggplot(df, aes(a, b, z = c))
d + stat_summary_2d() +
geom_point(aes(x = a, y = b, size = c),
position = position_nudge(-.1, -.1))