Nat*_*ler 2 r ggplot2 geom-raster
我正在寻找一种在小规模地图上绘制栅格数据(使用ggplot和geom_raster)的方法.我想使用ggalt和coord_proj'放大'shapefile的特定区域,但我遇到了错误geom_raster only works with Cartesian coordinates
ggplot() +
geom_polygon(data = land_df, aes(long, lat, group = group), fill = 'grey25')+
geom_raster(data = df, aes(lon_bin, lat_bin, fill = sum_hours)) +
coord_proj(xlim = c(-67, -63),ylim = c(0, 9))
Run Code Online (Sandbox Code Playgroud)
是否有另一种使用coord_proj生成放大光栅贴图的简单方法,并避免了geom_raster仅适用于笛卡尔坐标的限制?
我能想到的其他选项是为每个'放大'区域生成单独的shapefile,但我正在绘制许多这些栅格,而不是必须为每个栅格生成单独的shapefile,而是使用coord_proj以编程方式指定栅格地图限制.
谢谢
我认为你需要使用geom_tile()而不是geom_raster().geom_raster()内部使用a rasterGrob,这是一个只能线性缩放的位图.因此限制了笛卡尔坐标系.geom_tile()绘制可以转换为任何坐标系的单个矩形.
我没有你的数据集,但我可以展示一个非常简单的例子:
df <- data.frame(x = 1:100) # a very simple dataset
p_raster <- ggplot(df, aes(x, fill = x, y = 0)) +
geom_raster() +
scale_fill_distiller()
p_raster
Run Code Online (Sandbox Code Playgroud)
p_raster + coord_polar()
## Error: geom_raster only works with Cartesian coordinates
Run Code Online (Sandbox Code Playgroud)
现在geom_tile():
# for geom_tile(), map both fill and color to avoid drawing artifacts
p_tile <- ggplot(df, aes(x, color = x, fill = x, y = 0)) +
geom_tile() +
scale_fill_distiller() +
scale_color_distiller()
p_tile
Run Code Online (Sandbox Code Playgroud)
p_tile + coord_polar()
Run Code Online (Sandbox Code Playgroud)