如何在R中以600分辨率将栅格图层矩阵图保存为JPEG至指定文件夹
栅格矩阵图高分辨率保存问题
我已将多个栅格图层绘制成2行3列的矩阵网格,需要将该图保存至指定文件夹用于会议海报展示,要求600dpi保证清晰度。我能正常保存ggplot对象,但使用base绘图系统保存栅格图时遇到以下问题:
1. jpeg函数触发警告
警告信息:
Warning message: In jpeg("Raster_Layers.jpg", quality = 100, units = "px", bg = "white", : NAs introduced by coercion
对应代码:
# 创建空栅格用于后续绘图 r <- raster(ncols=3, nrows=2, xmn=1, xmx=6, ymn=1, ymx=6) r1 <- r2 <- r3 <- r4 <- r5 <- r6 <- setValues(r, rnorm(ncell(r))) # 设置2行3列的布局矩阵 m <- rbind(c(1, 2, 3), c(4, 5, 6)) layout(m) # 尝试保存图片到指定文件夹 jpeg('Raster_Layers.jpg', quality = 100, units = "px", bg="white", res=600, height=437, width=760, file = "/Users/Output") # 绘制6个栅格图层 plot(resampled_sss, main = "平均海表盐度 (kg/m3)") plot(resampled_sst, main = "平均海表温度 (°C)") plot(resampled_chla, main = "平均叶绿素a (kg/m3)") plot(depth, main = "深度 (m)") plot(slope, col=rev(map.pal("viridis",100)), main="坡度 (°)") plot(rugosity, col=rainbow(50), main="粗糙度 (°)") dev.off()
问题分析与修正:
- 错误原因:同时指定了文件名参数和
file参数,jpeg函数的第一个参数就是输出文件名,额外添加的file="/Users/Output"是无效的(该参数需传入完整文件路径,而非文件夹路径),导致参数冲突触发警告。 - 修正方案:将输出路径整合到第一个参数中,删除冗余的
file参数:
# 设置2行3列的布局矩阵 m <- rbind(c(1, 2, 3), c(4, 5, 6)) layout(m) # 正确指定完整输出路径(文件夹+文件名) jpeg('/Users/Output/Raster_Layers.jpg', quality = 100, units = "px", bg="white", res=600, height=437, width=760) # 绘制栅格图层 plot(resampled_sss, main = "平均海表盐度 (kg/m3)") plot(resampled_sst, main = "平均海表温度 (°C)") plot(resampled_chla, main = "平均叶绿素a (kg/m3)") plot(depth, main = "深度 (m)") plot(slope, col=rev(map.pal("viridis",100)), main="坡度 (°)") plot(rugosity, col=rainbow(50), main="粗糙度 (°)") dev.off()
2. png函数触发错误
错误信息:
Error: object '.X11env' not found
对应代码:
# 创建空栅格用于后续绘图 r <- raster(ncols=3, nrows=2, xmn=1, xmx=6, ymn=1, ymx=6) r1 <- r2 <- r3 <- r4 <- r5 <- r6 <- setValues(r, rnorm(ncell(r))) # 设置2行3列的布局矩阵 m <- rbind(c(1, 2, 3), c(4, 5, 6)) layout(m) options(X11.options = c("-dpi", "600")) # 尝试保存图片 png(file = "Raster_Layers.jpg", name.opt = ".X11.Options", envir = .X11env, quality = 100, units = "px", bg="white", type = "quartz", res=600, height=437, width=760)
问题分析与修正:
- 错误原因:
.X11env不是R的默认对象,且name.opt、envir并非png函数的必要参数;同时文件名使用了.jpg后缀(png格式应使用.png),这些冗余/错误参数导致报错。 - 修正方案:删除无效参数,指定正确的文件路径和后缀:
# 设置2行3列的布局矩阵 m <- rbind(c(1, 2, 3), c(4, 5, 6)) layout(m) # 正确保存png格式图片 png('/Users/Output/Raster_Layers.png', units = "px", bg="white", res=600, height=437, width=760) # 绘制栅格图层 plot(resampled_sss, main = "平均海表盐度 (kg/m3)") plot(resampled_sst, main = "平均海表温度 (°C)") plot(resampled_chla, main = "平均叶绿素a (kg/m3)") plot(depth, main = "深度 (m)") plot(slope, col=rev(map.pal("viridis",100)), main="坡度 (°)") plot(rugosity, col=rainbow(50), main="粗糙度 (°)") dev.off()
附绘制完成的栅格矩阵图:包含6个栅格图层,按2行3列排列,分别为平均海表盐度、平均海表温度、平均叶绿素a、深度、坡度、粗糙度。
内容的提问来源于stack exchange,提问作者Alice Hobbs
相关产品推荐
相关产品推荐

