微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调整geom_bin2d bin的大小以适应纬度,椭球或CRS

如何解决调整geom_bin2d bin的大小以适应纬度,椭球或CRS

ggplot中的geom_bin2d()函数将x y坐标视为笛卡尔坐标。这对于较小的区域来说很好,但是在较大的纬度范围内(如下例所示),北部网格单元应该较小,以解决球形地球问题。有没有办法将sf包和ggplot一起使用来创建使用CRS或其他方式考虑纬度的单元格或垃圾箱?

library(ggplot2)
world.map <- borders(database="world")

data.df <- structure(list(lon = c(4.4225,8.34805555,9.59472222,5.1,5.432968,5.495302,5.502041,8.11666666,2.44027777,6.03333333,13.78554,13.86478,13.764611,13.74138889,13.758501,13.76666667,13.773971,18.19777778,13.869739,16.619,17.01194444,13.933171,17.71416667,15.07055556,13.797308,13.86391,13.85,13.635872,13.688423,13.943081,13.875867,13.8,29.61166667,6.87888888,3.15694444,5.68444444,5.97611111,3.24166666,4.70638888,3.11472222,5.71083333,4.7225,5.64888888,4.81972222,6.21666666,6.53194444,6.43527777,4.75555555,6.9875,25.266456,25.27405,35.191283,36.77222222,35.168092,12.03333333,14.477606,12.1,13.21666667,11.31694444,11.28444444,12.580671,12.592762,12.600822,14.51666667,12.49194444,12.91666667,15.603985,15.61666667,13.45369,14.477484,16.617348,14.36666667,13.426529,12.825122,12.740419,12.43472222,12.52805556,9.85194444,32.7491,13.88333333,13.91666667,13.85833333,13.8625,13.88888889,13.89166667,13.90833333,13.93055556,13.9525,14,13.8875,13.93333333,13.875,13.87083333,13.99861111,13.96916667,13.9,13.86666667,13.99722222,13.88055556,9.55916666,13.97083333,13.99166667,20.18333333,22.16666667,13.810062,13.79944444,14.15361111,13.87916667,14.13333333,35.009435,35.05138889,35.24138889,2.628852,2.3125,35.63333333,9.25207514,9.14187892,9.15785502,9.11558114,9.13739121,9.1935591,9.19716902,11.302077,8.764667,9.1708657,9.10722982,9.13556821,9.18187571,9.18268804,9.170828,9.18793949,9.19067723,9.19267533,9.19321538,9.19826599,9.203165,9.208521,9.21763,9.21970409,9.22,9.22750169,9.227908,9.23527707,8.52361111,8.55,8.65222222,9.10777777,8.893052,9.07416666,9.22279633,9.22414942,9.22621607,9.23198663,9.23963326,9.25423772,9.26005076,9.26115446,9.26634793,9.13210004,9.14154918,9.1471877,9.1486579,9.186056,9.190129,9.109037,8.38333333,9.25413392,9.258595,9.31270865,9.34885571,9.08333333,29.14833333,32.79555556,33.49333333,36.72305556,47.75,36.51944444,31.9,36.825,35.37916667,36.41722222,36.41722222),lat = c(36.8938888,35.2047222,35.2308333,35.6694444,35.7833333,35.963823,36.378438,36.362882,35.3997222,36.5933333,35.2833333,45.038838,44.824249,44.985941,44.9891666,44.894065,44.9166666,44.910126,45.6977777,44.933454,43.173,43.2933333,44.815984,43.1122222,44.1327777,44.952534,44.879442,44.8666666,45.081293,45.051192,44.851109,45.021582,45.6333333,30.8488888,43.63,48.1755555,43.4469444,43.34,43.3016666,44.4441666,43.3105555,43.6175,43.7802777,43.6111111,45.1208333,43.2999998,43.1711111,43.4472222,44.3930555,49.9091666,37.397965,37.406013,33.048594,30.7930555,33.065423,42.2833333,40.766229,42,43.7166666,42.4466666,42.4172222,42.134065,42.150051,42.133263,40.6833333,41.965,42.0833333,41.07704,41.3166666,43.488981,40.753552,41.8838888,39.603214,40.85,41.267609,41.923932,41.918429,41.9752777,41.9683333,44.0883333,21.7663,32.5255555,32.5041666,32.4916666,32.4888888,32.45,32.4333333,32.3833333,32.4,32.4166666,32.4472222,32.475,32.55,32.4541666,32.4722222,32.4583333,32.5333333,32.525,32.5,32.5444444,35.7047222,32.4416666,32.4555555,32.2,32.7833333,32.705744,32.6230555,32.7133333,32.4666666,32.121666,32.0677777,31.825,41.611822,41.4911111,33.0166666,36.4053049,36.4005967,36.3959791,36.4612822,36.4610909,36.3980969,36.4013479,33.193102,35.054183,36.4669244,36.4649542,36.4647856,36.4802508,36.4754574,36.43998,36.3984556,36.4201472,36.4250486,36.4396792,36.4284603,36.427206,36.440619,36.434004,36.4019043,36.4236111,36.4360123,36.431598,36.4234619,35.125,36.05,35.1363888,35.3213888,35.449216,35.2386111,36.4841521,36.4886695,36.4841078,36.4858598,36.4946028,36.5115557,36.50032,36.5092775,36.5003663,36.4329255,36.4133715,36.4115989,36.4307499,36.408379,36.403706,36.449233,35.0833333,36.4755143,36.46397,36.4695813,36.4735427,36.3333333,37.8122222,34.7791666,44.6116666,45.2161111,63.3333333,45.3525,46.6830555,45.1888888,45.0488888,45.2363888,45.2363888),presses = c(5L,6L,2L,21L,8L,4L,10L,1L,3L,5L,7L,9L,17L,18L,11L,5L)),class = "data.frame",row.names = c(NA,-202L))


ggplot(data=data.df,aes(x=lon,y=lat)) + 
  world.map + 
  geom_bin2d(bins=200,alpha=0.6) +
  scale_fill_gradient(low="light blue",high="dark blue") +
  coord_map(projection = "mercator",ylim =c(25,55),xlim=c(-15,45))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。