r语言读写word_R语言:在word中插入ggplot

最近CRAN上新了一个叫eoffice的package,并且不时被各路大佬提起。这个包的功能刚好也符合我最近的需求,这次带各位先来试试水。包的官方介绍:

1. Introduction​cran.r-project.org
3f62ab16497b4577e19a7f06ca320331.png

这次主要试试在word中用该包插入ggplot。既然要试,图就整的复杂一点:

> rm(list = ls())
> gc()used  (Mb) gc trigger  (Mb) max used  (Mb)
Ncells 2423917 129.5    4543915 242.7  4543915 242.7
Vcells 6168695  47.1   12255594  93.6 10143094  77.4
> 
> pacman::p_load(data.table, magrittr, ggplot2, ggthemr, cowplot, stringr, dplyr, patchwork)
> 
> library(eoffice)
> library(gridExtra)
> 
> ggthemr('fresh')
> 
> test<-mtcars %>% mutate(text = rownames(mtcars)) %>% data.table() %$%
+   .[,c('brand', 'model','tag'):=tstrsplit(text, split = ' ')]
> testsum<-test[,.(mpg = mean(mpg, na.rm = T), wt = mean(wt, na.rm = T)), by = 'brand'][1:5,]
> 
> 
> p1<-ggplot(test)+
+   geom_histogram(aes(x = mpg))+
+   coord_flip()+
+   scale_y_continuous(limits = c(0,8))+
+   annotation_custom(grob = tableGrob(testsum, rows = NULL),
+                     xmin = 25, xmax = 33, ymin = 5, ymax = 7)
> p2<-ggplot(test)+
+   geom_point(aes(x = disp, y = hp))
> p3<-ggplot(test)+
+   geom_hex(aes(x = drat, y = wt))
> 
> p<-p1+(p2/p3)
> p
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

出图如下:

478564f09f1e4c059158daf8f552e759.png

拼图用的patchwork,如何在图中插入表格请参考我之前写的文章:传送门。

然后按照官方介绍,直接用todocx把图片插入word:

> todocx(p, filename = 'D:/R/eoffice/testword.docx', width = 6.5, height = 5, 
>        append = F)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning message:
dml_docx() is deprecated and will be removed in the next version (> 0.2.0), use devEMF::emf instead. 

注意:append设置为F的话,filename文件原有的内容会被完全覆盖!第一次尝试千万注意备份文件

提示一些警告,不过不要紧,看看filename的文件:

333d5f88b5cd38af4e2f48644556e7f3.png

这么方便的工具,排版当然不可能帮你一次排好的。要自己调长宽,并且像图中有grob对象(就是那张表)的情况下,这些对象还要单独调整。

这玩意儿牛逼的地方在于,图片导出word的时候就是矢量图,所有元素都可以选中并编辑,像上图那样。但凡投过paper的都知道期刊会要求稿件里插图的矢量图,这个包在这方面可以为我们省下不少功夫。

不过这也有缺点,要是要素过多(例如大量数据的散点图),一般电脑打开这个word肯定死机。就上面那个图片,我的笔电打开word都已经有点卡了...

此外,如果导出的时候filename的文件已在word打开,就会报错:

> todocx(p, filename = 'D:/R/eoffice/testword.docx', width = 6.5, height = 5, 
+        append = F)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Error in value[[3L]](cond) : Could not write "D:/R/eoffice/testword.docx" [zip error: `Cannot open zip file `D:/R/eoffice/testword.docx` for writing` in file `zip.c:373`]
此外: Warning messages:
1: In grob$wrapvp <- vp : 到达了流逝时间限制
2: dml_docx() is deprecated and will be removed in the next version (> 0.2.0), use devEMF::emf instead. 

将append设置为T,就可以在已存在的文档最后面插入图片了:

> todocx(p, filename = 'D:/R/eoffice/testword_2.docx', width = 6.5, height = 5, 
+        append = T)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

d964dd222a48261f78c4e49971009b58.png
这是一个挺大的word文档,里头还有各种追踪修订,也顺利导入了

总的来说,eoffice无法调整导出图片为栅格(例如jpeg),因此导出到word可能是eoffice最不适用的场景了。比较建议的用法还是每张图片单独存成一个ppt或pdf。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hamburger组件_一个侧边栏导航组件实现思路

翻译&#xff1a;布兰作者&#xff1a;Adam Argyle来源&#xff1a;https://web.dev/building-a-sidenav-component/在这篇文章中&#xff0c;我想和大家分享我是如何为 web 原型化一个 Sidenav 组件的&#xff0c;这个组件是响应式的&#xff0c;有状态的&#xff0c;支持键盘…

centos php mysql 5.6 安装_centos7安装nginx、php5.5、mysql5.6

一、nginx1、安装yum install nginx2、启动systemctl start nginx关闭&#xff1a;systemctl stop nginx 重启&#xff1a;systemctl restart nginx 检查状态&#xff1a;systemctl status nginx3、测试浏览器直接访问http://ip,应该会看到以下界面&#xff1a;4、支持php打开/…

myeclipse怎么导入mysql驱动_myeclipse sql导入数据库驱动包

如何配置strutshibernate&#xff0c;基本使用方法不少童鞋在自学SSH框架的时候&#xff0c;难在创建第一个项目&#xff0c;如何搭建好这些框架&#xff0c;很多书上只是给出了代码但是没有教如何使用&#xff0c;所以在本次博客中将会图文结合来说一下如何使用struts结合hibe…

创建或更改表 tablename 失败_mysql 创建用户

一. 创建用户命令:CREATE USER usernamehost IDENTIFIED BY password;说明&#xff1a;username&#xff1a;你将创建的用户名host&#xff1a;指定该用户在哪个主机上可以登陆&#xff0c;如果是本地用户可用localhost&#xff0c;如果想让该用户可以从任意远程主机登陆&#…

sql2000 mysql 兼容_SQL Server2000如何恢复数据库

以里诺仓库管理软件(SQL网络版)为例&#xff0c;如果您因电脑操作系统重装&#xff0c;需要把以前备份的数据库恢复过来&#xff0c;请您按如下操作来。首先&#xff0c;您需要安装MS SQL Server2000。1. 以Windowns XP为例&#xff0c;SQL Server个人版安装完成后&#xff0c;…

java dfs_Java数据结构与算法 深搜(DFS)的简单使用(一)之排列组合

今天&#xff0c;我们来简单介绍一下深度优先搜索(DFS)的概念和使用。在百度词条中&#xff0c;对深搜的解释是这样的。百度词条中的解释由此&#xff0c;我们可知&#xff0c;深搜是广泛运用到 图 中的搜索方法之一。用深度优先搜索遍历图的基本思路是&#xff1a;(1)访问顶点…

java 线程执行结束_Java_如何等待子线程执行结束

本程序的数据有可能是如下:main thread work startsub thread start working.main thread work done.now waiting sub thread done.sub thread stop working.now all done.忽略标号, 当然输出也有可能是1和2调换位置了. 这个我们是无法控制的. 我们看下线程的join操作, 究竟干了…

mysql将时间轴转化为时间_MySQL日期计算及格式转换有关问题

mysql日期计算及格式转换问题2012-06-09 21:08 MySQL日期计算及格式转换问题做开发的时候经常会碰到以下几个问题使用mysql的内置函数将时间轴转成对应的日期方法一&#xff1a;使用from_unixtime(unix_timestamp)函数即可实现&#xff0c;如&#xff1a;SELECT FROM_UNIXTIME(…

java语言特点 字符串不变_面试必问:Java中String类型为什么设计成不可变的?

这几天在各大平台上都看到过这样一些帖子&#xff0c;全都是关于String类型对象不可变的问题&#xff0c;当然现在也是找工作的准备时期&#xff0c;因此花了一部分时间对其进行整理一下。想要完全了解String&#xff0c;在这里我们需要解决以下几个问题(1)什么是不可变对象&am…

java socket android_Android:这是一份很详细的Socket使用攻略

前言Socket的使用在 Android网络编程中非常重要今天我将带大家全面了解 Socket 及 其使用方法目录示意图1.网络基础阅读本文前&#xff0c;请先了解 关于计算机网络基础&#xff0c;如计算机体系结构、TCP、UDP等知识2. Socket定义即套接字&#xff0c;是应用层 与 TCP/IP 协议…

内构函数java_Android JNI参数传递

Java中调用native函数传递的参数是Java数据类型&#xff0c;到了JNI层需进行数据类型转换&#xff0c;基本数据类型是在前面加个j&#xff0c;如int——>jint&#xff0c;应用数据类型除了基本数据类型的数据、Class、String和Throwable外&#xff0c;其余所有Java对象的数据…

java 垃圾回收机制_Java的垃圾回收机制

前言在C语言中, 程序员必须小心谨慎的处理每一项内存分配, 且内存使用完后必须手动释放曾经占用的内存空间。当内存释放不够完全时, 即存在分配但永不释放的内存块, 就会引起"内存泄漏"问题。而在Java语言中, 它给了程序员一个美好的承诺: 程序员无需管理内存, 因为J…

java闹钟程序声音_跪求高手帮忙写一个JAVA手机闹钟程序 实现添加铃声和设置多闹钟...

展开全部import java.util.*;import java.awt.*;import java.applet.*;import java.text.*;public class AlarmClock extends Applet implements Runnable{Thread timernull; //创建线程timerImage clockp,gif1,gif2,clock6,clock7; //clockp:闹钟的外壳&#xff0c;闹铃和e68a…

摩托罗拉ex232java_摩托罗拉ex232r如何刷机?摩托罗拉ex232r评测

导语&#xff1a;随着 高科 技产业的发展&#xff0c;手机作为一个深受影响的产业&#xff0c;其竞争的激烈程度也是不言而喻的。市场好比战场&#xff0c;而为了在这个手机战场中赢 得胜 利&#xff0c;不论国内或者是国外的各大厂商也都全身心的投入到新技术的开发和新产品的…

JAVA捕捉输入格式异常_Java学习(四).异常处理

异常处理任何一个软件或程序都可能在运行的过程中出现故障&#xff0c;问题的关键是故障出现以后如何处理&#xff1f;谁来处理&#xff1f;怎样处理&#xff1f;处理后系统能否恢复正常的运行&#xff1f;本章在介绍Java处理这类问题基本方法的基础上&#xff0c;讨论包含异常…

php去除html属性,PHP如何去掉所有HTML标签?

PHP如何去掉所有HTML标签&#xff1f;在PHP中可以使用“strip_tags()”函数将字符串中的所有HTML标签去除&#xff0c;该函数用于从字符串中去除HTML和 PHP标记&#xff0c;其语法是“strip_tags(str)”&#xff0c;其参数str表示要进行操作的字符串&#xff0c;返回值为处理后…

php获取本机root,通过PHP执行root命令

慕村225694在尝试之前&#xff0c;请阅读整个文章&#xff0c;然后进行选择。使用二进制包装器(带有suid位)的解决方案1)创建一个脚本(最好是.sh)&#xff0c;其中包含要作为root用户运行的脚本。# cat > php_shell.sh < wrapper.c < #include #include int mai…

java寂静岭 攻略,GBA版《寂静岭》HARRY篇图文流程攻略

“Play Novel: Silent Hill”是KONAMI于2001年3月21日在GBA上推出的一款文字冒险游戏&#xff0c;剧情内容取自同社的恐怖冒险游戏——Silent Hill(《寂静岭》)。游戏基本上是纯粹的文字冒险游戏&#xff0c;过程中穿插着几段动画CG作为过场&#xff0c;游戏中绝大部分的图片和…

实验一熟悉matlab环境,数字信号处理报告实验一:熟悉MATLAB环境.doc

数字信号处理报告实验一&#xff1a;熟悉MATLAB环境.doc实验一熟悉MATLAB环境一 实验目的1. 熟悉MATLAB的主要操作命令。2. 学会简单的矩阵输入和数据读写。3. 掌握简单的绘图命令。4. 用MATLAB编程并学会创建函数。5. 观察离散系统的频率响应。二 实验内容2.用MATLAB实现下列序…

微擎cloud.mod.php,微擎“could not resolve ”、“could not resolve host”系列问题处理办法...

今天一个用户跟我说模块安装出现”could not resolve host:update.we10d.cn“报错&#xff0c;昨天在整理最近十个月用户搜索关键词排行的时候也发现”could not resolve host“、”could not resolve“还是占据不小的比例的。其实这类报错的处理方法大致相同&#xff0c;都是/…