如何使用R语言输出高dpi图片?

应投稿要求,需要不小于300dpi的图片,使用maps绘制了简单地图,直接保存dpi只有96。
关注者
22
被浏览
132,737

6 个回答

原文首发: R语言绘图—输出为PPT修改

在我们使用R实际的绘图过程中,有些图形我们需要进行精妙的微调,如果使用代码进行调节可能工作量会比较大(只针对本次绘图,无需重复作图的情况),如果我们能导出图片在PPT中进行修饰,那这个将会极大的减少及方便我们的工作。今天我就给大家介绍这样一个包—export包。

一、export包介绍

export包是一个可以轻松从R中导出各种格式(world、PPT、excel、HTML、Latex)图片的R包,方便我们进行手动的修改。目前(2023年3月7日)该包已更新到0.3.0版本。

这里主要介绍常用的函数—将图输出为PPT或DOC的graph2office函数。

该函数用法如下:

graph2office(  x = NULL,  file = "Rplot", 
 fun = NULL,  type = c("PPT", "DOC"), 
 append = FALSE,  aspectr = NULL,  width = NULL, 
 height = NULL,  scaling = 100,  paper = "auto", 
 orient = ifelse(type[1] == "PPT", "landscape", "auto"),  
margins = c(top = 0.5, right = 0.5, bottom = 0.5, left = 0.5),  
center = TRUE,  offx = 1,  offy = 1,  upscale = FALSE,  vector.graphic = TRUE,  ...)

部分参数意义如下:

二、包的安装

直接使用命令即可安装。

install.packages("export")

安装Github最新的开发版本需输入如下代码:

install.packages("officer")
install.packages("rvg")
install.packages("openxlsx")
install.packages("ggplot2")
install.packages("flextable")
install.packages("xtable")
install.packages("rgl")
install.packages("stargazer")
install.packages("tikzDevice")
install.packages("xml2")
install.packages("broom")
install.packages("devtools")
devtools::install_github("tomwenseleers/export") 

三、示例

这里我们使用之前的推文介绍的金字塔塔图进行示例,金字塔图的绘制可见之前的推文:R语言绘图—使用ggplot2绘制金字塔图。

绘图代码如下:

set.seed(1234)
mydata<-data.frame(  
age=rnorm(n=6000,mean=40,sd=10),  
gender=rep(c("male","female"),3000), 
 phy=rep(c("low","mid","high"),2000))
library(data.table)
library(ggplot2)
setDT(mydata)
mydata[,age_cut:=cut(age,breaks = c(0,5,15,20,25,30,35,40,45,50,55,60,65,70,75,80),  
                   right = F,include.lowest = T)]
pp1<-ggplot(data=mydata,aes(x = age_cut, fill=gender)) +#指定使用性别上颜色 
 geom_histogram(data=mydata[gender=="male"],#取男性的数据  
               colour = "white",#指定外框线的颜色   
              stat = "count",#计算各年龄段数量   
              width=1,#指定直方图的宽度为1,这样直方图之间的间距为0 
 )+  geom_histogram(data=mydata[gender=="female"], 
                colour = "white",      
           stat = "count",           
      aes(y = ..count..*(-1)),      
           width=1  ) +  
coord_flip() +  
scale_y_continuous(limits = c(-700, 700),    
                 breaks = seq(-700,700,100),   
                  labels = abs(seq(-700, 700, 100)))+ 
 hrbrthemes::theme_ipsum()+ 
 theme(   
 legend.position = "bottom",  
    axis.text = element_text(size = 9, face = "bold"),   
  axis.title = element_text(size = 11, face = "bold"),  
  axis.title.y = element_text(angle = 0))+  
labs(title ="人口金字塔",    
   subtitle="R语言与医学生",    
   x="年龄段",   
    y="人数")+ggsci::scale_fill_jama()

绘制图形如下:



将金字塔图输出为PPT格式进行修改:

graph2office(  x=pp1,#需要输出的图形  
file="输出的图",#输出后图形的名字  
type = c("PPT"),#输出图形的格式  
width = NULL,#图形在宽度 
 height = NULL#图形在高度
)

输出后在设置的R工作环境下找到输出的图形:



打开后我们进行修改:

图形中的每个元素都可以修改包括图例、文字、背景线、图形的颜色等,如下我对图形做的一些修改。(个人的体会还是很方便的)



使用以下代码:还能将图形输出为:svg,png,tif,jpg格式,参数基本同graph2office。

graph2svg()