如何使用stat_summary_2d创建大小不同的点

时间:2016-08-01 23:16:47

标签: r ggplot2

我想改变用stat_summary_2d创建的点的大小,目前它们都是相同的大小,没有提供信息。我通常会使用geom_point(),但是因为我希望这些点位于其正确的bin中心,这是不合适的,它们相对于bin中心的位置不一致所以偏移也不起作用。

Example figure, I'd like to vary the size of the points based on a n_distinct(event_key)

与创建积分相关的代码是:

  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及其坐标而变化。

2 个答案:

答案 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()

生成的正确纬度中心(x,y)绘制尺寸变化点
geom_point(data = df, aes(x = x, y = y, size = value),
                   colour = "red", shape = 1)

enter image description here

答案 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))