R语言如何导出3543像素的JPEG格式ggplot图表
ggplot导出指定像素JPEG的正确方法
你的代码参数配置存在错误,核心偏差点:
jpeg()基础函数的width、height默认单位为英寸,不是毫米,直接传9会按9英寸计算宽度,远大于目标的90mmres参数接收的是DPI分辨率值,不是总像素值,传入3543会把分辨率设为3543DPI,不符合1000DPI的要求- 开启绘图设备后需要显式输出ggplot对象、最后关闭设备,否则容易导出空白文件或文件写入不完整。
方法1:使用基础jpeg()函数实现
目标3543像素宽度的计算逻辑为:像素值=物理尺寸(英寸)*DPI,90mm换算为英寸是90/25.4≈3.543,乘以1000DPI刚好得到3543像素。
library(ggplot2) # 提前构建好你的ggplot绘图对象,示例命名为p p <- ggplot(你的数据, aes(你的映射)) + 你的几何图层 # 开启JPEG绘图设备 jpeg( file = "Traject_1.jpg", width = 90/25.4, # 90mm转英寸 height = 60/25.4, # 替换为你需要的实际高度,按相同逻辑转英寸即可 res = 1000, # 目标分辨率1000DPI pointsize = 7, type = "windows", antialias = "cleartype" ) print(p) # 必须显式打印ggplot对象 dev.off() # 关闭设备完成文件写入
方法2:使用ggsave()简化实现(推荐)
ggplot2自带的ggsave()函数支持直接指定毫米单位,不需要手动换算,也不需要手动开关设备,出错概率更低:
ggsave( filename = "Traject_1.jpg", plot = p, # 传入你的ggplot对象 width = 90, height = 60, # 替换为你需要的实际高度 units = "mm", # 直接指定尺寸单位为毫米 dpi = 1000, # 1000DPI分辨率 pointsize = 7, type = "windows", antialias = "cleartype" )
运行以上任意一种方法的代码,导出的JPEG文件宽度即为3543像素,对应90mm宽度、1000DPI的要求。
内容的提问来源于stack exchange,提问作者Student
相关产品推荐
相关产品推荐

