You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 02:47:25