如何移除ggplot坐标轴的度数与方位符号
解决ggplot添加KML点后坐标轴出现度数/方位标识的问题
问题根源是Google Earth导出的KML默认采用WGS84(EPSG:4326)地理坐标系,这个坐标系的坐标轴标注默认会显示度数符号(°)和方位标识(N/S/E/W)。添加该图层后,ggplot会自动切换到对应CRS的标注规则,覆盖了底图原本的显示格式。以下是几种直接有效的解决方法:
方法1:统一所有图层的CRS(推荐)
将KML点数据转换为底图使用的坐标系,使整个绘图的CRS保持一致,坐标轴标注会沿用底图的格式:
# 先查看底图的坐标系,假设底图对象为base_map st_crs(base_map) # 将KML点数据转换为底图的CRS kml_points_transformed <- st_transform(kml_points, crs = st_crs(base_map)) # 绘制图层 ggplot() + geom_sf(data = base_map) + geom_sf(data = kml_points_transformed)
方法2:手动修改坐标轴标签格式
如果不想转换坐标系,可以直接覆盖坐标轴的标签生成规则,去掉度数和方位标识:
# 方法A:用正则表达式替换多余字符 ggplot() + geom_sf(data = base_map) + geom_sf(data = kml_points) + scale_x_continuous(labels = function(x) gsub("°[EW]", "", x)) + scale_y_continuous(labels = function(x) gsub("°[NS]", "", x)) # 方法B:用scales包直接输出数字格式 library(scales) ggplot() + geom_sf(data = base_map) + geom_sf(data = kml_points) + scale_x_continuous(labels = label_number()) + scale_y_continuous(labels = label_number())
方法3:强制指定坐标轴标注的CRS
通过coord_sf()指定使用底图的CRS渲染坐标轴,忽略KML图层的CRS影响:
ggplot() + geom_sf(data = base_map) + geom_sf(data = kml_points) + coord_sf(crs = st_crs(base_map))
内容的提问来源于stack exchange,提问作者Jason Edelkind
相关产品推荐
相关产品推荐

