思路

  grid的画图函数都含有just,但是just参数的是怎么调节图形位置的总是让人非常费解,于是便写了代码来一探究竟。

  思路非常简单:放一个2*2的布局viewport,每个布局里面放一个viewport,每个viewport都用了不同的just参数。just之后的矩形用蓝色显示,中心点的移动用箭头表示出来, 这样每个参数对应图形怎么移动的都能一目了然。从以下的代码也能学到如何安排布局, 如何使用grobX和grobY获得grob对象的坐标, 如何进行基本的viewport切换等。

代码

library(grid)

grid.newpage()  # new page
pushViewport(viewport(layout = grid.layout(2,2))) # 2 *2 layout # just top
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1))
grid.rect()
r1 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, name = "r1")
r2 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, just = c("top"),gp=gpar(col="blue"), name = "r2")
grid.draw(r1)
grid.draw(r2)
grid.segments(0.5,0.5,grobX(r2, 90), grobY(r2, 0), arrow=arrow(angle=15, type="closed"), gp=gpar(fill="black"))
grid.text("just: top" ,0.6, 0.8)
upViewport() # just left and top
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 2))
grid.rect()
r1 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, name="r1")
r2 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, just = c("left", "top"), gp=gpar(col="blue"), name="r2")
grid.draw(r1)
grid.draw(r2)
grid.segments(0.5, 0.5, grobX(r2, 90), grobY(r2, 0), arrow=arrow(angle=15, type="closed",), gp=gpar(fill="black"))
grid.text("just: left and top", 0.6, 0.8)
upViewport() # just left and bottom
pushViewport(viewport(layout.pos.col = 2, layout.pos.row = 1))
grid.rect()
r1 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, name="r1")
r2 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, just = c("left", "bottom"), gp=gpar(col="blue"), name="r2")
grid.draw(r1)
grid.draw(r2)
grid.segments(0.5, 0.5,grobX(r2, 90), grobY(r2, 0), arrow=arrow(angle=15, type="closed",), gp=gpar(fill="black"))
grid.text("just: left and bottom", 0.6, 0.8)
upViewport() # just right bottom
pushViewport(viewport(layout.pos.col = 2, layout.pos.row = 2))
grid.rect()
r1 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, name="r1")
r2 <- rectGrob(0.5, 0.5, width = 0.2, height = 0.2, just = c("right", "bottom"), gp=gpar(col="blue"), name = "r2")
grid.draw(r1)
grid.draw(r2)
grid.segments(0.5,0.5,grobX(r2, 90), grobY(r2, 0), arrow=arrow(angle=15, type="closed",), gp=gpar(fill="black"))
grid.text("just: right and bottom", 0.6, 0.8)
upViewport()

结果

结论

  • just参数对图形进行相反的调节,比如想向上调节图形,就得调节just="bottom",也可以理解为真实位置相对于画图位置,比如真实位置要比画图位置要低,就用just="bottom“
  • grobX角度为90时, grobY 角度为0时,可获得图形的中心位置, grobX 为0时X位置在图形的最右, grobY 为0时Y位置在图形的中间

R语言grid包just参数如何just图形位置的更多相关文章

  1. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  2. R语言-Knitr包的详细使用说明

    R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...

  3. R语言dplyr包初探

    昨天学了一下R语言dplyr包,处理数据框还是很好用的.记录一下免得我忘记了... 先写一篇入门的,以后有空再写一篇详细的用法. #dplyr learning library(dplyr) #fil ...

  4. R语言-神经网络包RSNNS

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  5. R 语言画图的基本参数

    R 语言画图的基本参数 点 点的种类 点的种类参数为 pch,每一种符号对应一个数字编号 # 点有25种,为了展示25种点 x = 1:25 y = 1:25 x ## [1] 1 2 3 4 5 6 ...

  6. R语言扩展包dplyr——数据清洗和整理

    R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报  分类: R Programming(11)  ...

  7. 安装R语言的包的方法

    安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA")  # 安装 TSA install.packages("TS ...

  8. R语言kohonen包主要函数介绍

    最近准备写一篇关于自组织映射 (Self-organizing map)的文章.SOM的代码很多,研究了一圈之后目前使用最顺手的是R语言的kohonen包. 这个kohonen包功能很丰富,但是接口不 ...

  9. R语言扩展包dplyr笔记

    引言 2014年刚到, 就在 Feedly 订阅里看到 RStudio Blog 介绍 dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等 ...

随机推荐

  1. 2018-2019-2 20175204 张湲祯 实验二《Java面向对象程序设计》实验报告

    2018-2019-2-20175204 张湲祯 实验二 <Java开发环境的熟悉>实验报告 实验二 Java面向对象程序设计 一.实验内容: 初步掌握单元测试和TDD 理解并掌握面向对象 ...

  2. FATAL ERROR: please install the following Perl modules before executing

    运行安装mysql 报错 [root@localhost mysql-mult]# ./scripts/mysql_install_db  --defaults-file=conf/3306my.cn ...

  3. java 日常学习记录

    前言:记录自己初学java 遇到的问题. 环境(win10  开始安装的IDEA,net 开发者  )学习网址:http://how2j.cn/stage/14.html (不是打广告) 特别是对初学 ...

  4. windows下Qt5.1 for android开发环境配置

    1.下载安装Qt 5.1.0 for Android (Windows 32-bit, 716 MB)   http://qt-project.org/downloads 2.打开Qt Creator ...

  5. Rollup.js 实践

    音乐分享: B.o.B Ft. Marko Penn - <Roll up> ——————————————————————————————————————————————————————— ...

  6. Integer.valueOf()与Integer.parseInt()区别

    Integer.parseInt()和Integer.valueOf()有本质区别,具体如下列: Integer.parseInt()把String   型转换为Int型,  Integer.valu ...

  7. JSP随记

    JSP简介: JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun公司倡导.许多公司参与一起建立的一种动态网页技术标准. Se ...

  8. MySQL 远程连接问题

    使用Workbench 无法远程连接Mysql服务器提示如下错误: 查找原因: 显示只能localhost 访问. 解决方法:修改授权远程访问 create user 'root'@'%' ident ...

  9. 第一阶段——CentOS6_Python3.6.1笔记(尚学堂-Python基础快速入门)+ 【补充】麦子-Python程序入门与进阶

    虚拟机环境: 设置网络 .修改网络地址 .设置网卡为nat模式 .确保物理机启动dhcp.net服务 .编辑文件:vim /etc/sysconfig/network-scripts/ifcfg-et ...

  10. IMCASH:卖掉了比特币回老家生活的现在怎么样了?

    2012年大学毕业后,我不经意间接触到了比特币,抱着本人对新鲜事物的好奇心和知乎上的一些流言蜚语,我把一部分上学时期辛苦兼职赚的钱换成了比特币,当时真的觉得自己中了邪,不知道为什么会入这个坑. 比特币 ...