首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在R中稳定的ggplotGrob定位是可能的吗?(两个缩放比例不同的y轴)

在R中,稳定的ggplotGrob定位是可能的。ggplotGrob是ggplot2包中的一个函数,用于将ggplot2图形对象转换为grid图形对象。通过使用ggplotGrob,可以将ggplot2图形对象嵌入到更复杂的grid图形布局中。

要实现两个缩放比例不同的y轴,可以使用ggplot2中的facet_grid函数或者cowplot包中的plot_grid函数。facet_grid函数可以在同一图中绘制多个子图,每个子图具有不同的y轴比例。plot_grid函数可以将多个图形对象按照指定的布局排列在一起。

以下是一个示例代码,演示如何在R中实现两个缩放比例不同的y轴:

代码语言:txt
复制
library(ggplot2)
library(grid)
library(cowplot)

# 创建两个数据集
data1 <- data.frame(x = 1:10, y1 = 1:10)
data2 <- data.frame(x = 1:10, y2 = 11:20)

# 创建两个ggplot2图形对象
plot1 <- ggplot(data1, aes(x, y1)) + geom_line()
plot2 <- ggplot(data2, aes(x, y2)) + geom_line()

# 将ggplot2图形对象转换为grid图形对象
grob1 <- ggplotGrob(plot1)
grob2 <- ggplotGrob(plot2)

# 创建两个不同的y轴比例
scale1 <- 1
scale2 <- 0.5

# 调整grid图形对象的布局
grob1 <- gtable_add_cols(grob1, unit(0.5, "null"))
grob2 <- gtable_add_cols(grob2, unit(0.5, "null"))
grob2 <- gtable_add_grob(grob2, grob1, t = 1, l = ncol(grob2) + 1, r = ncol(grob2) + 2, name = "plot1")

# 绘制图形
grid.newpage()
grid.draw(grob2)

# 使用facet_grid函数实现两个缩放比例不同的y轴
plot3 <- ggplot(data1, aes(x, y1)) + geom_line() +
  facet_grid(. ~ ., scales = "free_y")
plot4 <- ggplot(data2, aes(x, y2)) + geom_line() +
  facet_grid(. ~ ., scales = "free_y")

# 绘制图形
plot_grid(plot3, plot4, ncol = 1)

在上述代码中,首先创建了两个数据集data1和data2,分别表示两个图形对象的数据。然后使用ggplot函数创建了两个ggplot2图形对象plot1和plot2,分别绘制了data1和data2的线图。接下来,使用ggplotGrob将两个ggplot2图形对象转换为grid图形对象grob1和grob2。

对于第一种方法,我们通过调整grid图形对象的布局,将grob1嵌入到grob2中,并设置不同的y轴比例。最后使用grid.draw函数绘制出grob2。

对于第二种方法,我们使用facet_grid函数创建了两个具有不同y轴比例的子图plot3和plot4。最后使用plot_grid函数将两个子图排列在一起。

请注意,以上示例中没有提及腾讯云相关产品和产品介绍链接地址,因为这些内容与问题的答案无关。如有需要,您可以参考腾讯云的文档和官方网站来了解相关产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

R包:gtable包用于处理ggplot2图像

对于ncol、nrow参数而言,它们几乎已经拼图布局行列定义标签了,多个拼图工具中都能见到,比如ggpubrggarrange函数,当然这也不奇怪,毕竟ggarrange就是依赖cowplot...其实只需要简单修改就可以实现不同比例拼图,比如让左右两图宽度2:1,那么只需要设置好新建gtable宽度为2null和1null即可。如下图所示。...这里0.6相当于整个绘图区域而言(下图灰色部分),而不是第一张图坐标显示区域, 其值相对值,最宽最高代表值为1。...不同于cowplot嵌图,在这里可以指定图片只嵌到坐标指示panel区域。让嵌入主图panel区域40%大小。...$layout %>% filter(name == "panel") %>% c() # 将g2_new按照比例并到g1panel # 新建panel2*2绘图方格,比例都是6:4 # g1_

2.2K30

基于 R 语言科研论文绘图技巧详解(4)

简介 查阅文献过程,看到了几幅非常不错出版图,今天就跟着小编一起学习下,他们怎么使用 R 绘制出来。 今天主要介绍 第四幅图(D) —— 实现双 Y ,并且添加坐标微小刻度线。...,一共有三列,两个数据集 value ,width 放了两个数据集各自width, unit 为离散数据。...绘图步骤详解 关键在于如何构建双 Y ,下面来看看作者怎么设置吧。 绘制单 首先,处理下第一个线性图所需要数据,一共两列。...先简单绘制出线性图,可以看到: x 附近, y 下降很快。...此时结果如下: 注意: annotation_custom()一个特殊集合对象,用于静态注释。注释不会影响缩放。 这时,恭喜你两幅图已经合并啦!但是存在几个问题: 两幅图 Y 重复了。

74820

基础渲染系列(一)图形学基石——矩阵

(调整缩放) 一次操作尝试执行定位缩放。 你会发现比例尺也会影响位置。 发生这种情况是因为我们首先重新定位空间,然后对其进行缩放。...这意味着我们首先缩放,然后旋转,最后重新定位,这也是UnityTransform组件所做。 当然,目前仅支持围绕Z旋转。 稍后我们将处理其他两个。 ?...实际上,我们执行乘法 ? , 这是矩阵乘法。2 x 2矩阵第一列表示X,第二列表示Y。 ? (用2D矩阵定义X和Y) 通常,将两个矩阵相乘时,第一个矩阵逐行,第二个矩阵逐列。...(3个任意旋转) 4 矩阵转换 如果我们可以能够将三个旋转方向组合到一个矩阵,是否还可以将缩放,旋转和重新定位也组合到一个矩阵?如果我们可以将缩放和重新定位表示为矩阵乘法,那么答案肯定。...由于现在我们不会丢弃这些点,因此先通过重新定位确保所有内容都位于相机前面。 如果不缩放或旋转网格,则5距离就足够了,否则你可能需要更多。 ? ?

4.8K23

111-R可视化35-结合grid与ggplot输出

参考: 【R>>>gggrid】ggplot2实现grid功能 - 简书 (jianshu.com)[1] 《R绘图系统》Paul Murrell 前言 在先前内容[[101-R可视化29-底层绘图系统...这里有两个思路。 1-通通拆成grob处理 既然ggplot 本质也是grid,那我把ggplot 拆成最底层,再慢慢处理,不也是可以?...2-打印并不开启新页面 上面的例子,当我们想要实现两个ggplot 结果叠加显示时,使用方法,将被叠加ggplot 对象转为grid,从而实现视图上控制: 我们也可以在打印时声明ggplot...,一个对于分类数据位置设定,即使不是分类数据,其位置也是按照坐标来确定,而非一个grid 舒舒服服units 系统。...,[[106-R可视化30-底层绘图系统grid学习之重头创建ggplot对象1]],coords 并不是直接获取: coords <- coord$transform(data, panel_scales

76620

Three.js深入浅出:3-三维空间

欢迎各位小伙伴们多多关注,你点赞和评论我写作动力! 什么三维空间 Three.js,三维空间指的是具有三个独立轴空间,通常称为X、Y和Z。...这种空间用于描述和定位3D对象位置、旋转和缩放。 位置(Position):在三维空间中,每个对象都有一个位置,可以通过它在X、Y和Z坐标位置来确定。...Three.js,通常使用欧拉角(Euler angles)或四元数(quaternions)来表示旋转。 缩放(Scale):每个对象都可以沿着X、Y和Z进行缩放,这决定了物体大小。...通过不同轴上应用不同缩放因子,可以实现各种形状和比例变化。... three.js坐标颜色红R、绿G、蓝B分别对应坐标系x、y、z,对于three.js3D坐标系默认y朝上。

28350

ggplot2学习笔记之图形排列

作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源 简介 R语言基本绘图函数可以利用par()以及layout()来进行图形排列,但是这两个函数对于ggplot图则不太适用...R包cowplot cowplot::ggdraw()可以将图形置于特定位置, ggdraw()首先会初始化一个绘图面板, 接下来draw_plot()则是将图形绘制于初始化绘图面板,通过参数设置可以将图形置于特定位置...其中: label:标签 x,y:控制标签位置 size:标签字体大小 下面通过一个例子来讲解如何将多个图形放置特定位置。...R包grid R包gridgrid.layout()可以设置复杂图形布局,viewport()可以定义一个区域用来安置图形排列,print()则用来将图形置于特定区域。...ymin, ymax) 其中: grob:要添加图形元素 xmin, xmax: x方向位置(水平方向) ymin, ymax: y方向位置(竖直方向) ggplot图形添加table density.p

2.4K20

VBA实战技巧22:调整XY图表缩放比例以获取正确宽高比

目标:想要调整XY(散点图)图表,以使两个单位坐标值具有相同比例。也就是说,需要调整图1图表,以便成为如图2所示正方形和圆形。 ? 图1:开始时椭圆形和长方形 ?...x和y数据具有相似数量级情况下(例如,当绘制形状而不是代数函数时),会出现此问题。通常,创建此类图表时,x和y比例不同。绘图区域高度和宽度也助于绘制序列失真程度。...这里想法确定需要将两个哪个设置为最小/最大比例更大范围,以便以正确宽高比显示系列,也便于计算所需最小/最大比例值,从而相应地设置坐标轴比例。...,则需要将x设置为更大缩放比例范围(XDiff1),该范围根据绘图区域内部宽度水平缩放比例计算得出。...XDiff1对称地应用于x缩放比例(即,x最小缩放比例减少XDiff1/2),最大缩放比例增加相同量。如果垂直缩放比例大于水平缩放比例,则对y执行相同操作。

2K30

学习 PixiJS — 补间动画

以 slide 方法为例,完成一个滑动需要创建 x 补间对象和 y 补间对象,这两个对象都放在了 tweens 数组,这两个对象也都分别有 playing 属性。...参数: 名称 默认值 描述 anySprite 需要产生效果精灵 endScaleX 0.5 x 缩放比例 endScaleY 0.5 y 缩放比例 durationInFrames 60...持续时间,以帧为单位 示例: c.scale( sprite, //精灵 0.1, //x缩放比例 0.1, //y缩放比例 100 //持续时间,以帧为单位...参数: 名称 默认值 描述 anySprite 需要产生效果精灵 endScaleX 0.5 x 缩放比例 endScaleY 0.5 y 缩放比例 durationInFrames 60...示例: c.breathe( sprite, //精灵 0.1, //x缩放比例 0.1, //y缩放比例 100, //持续时间,以帧为单位 true,

2.2K30

57道常被问CSS面试题及答案汇总,帮你查漏补缺

也就是XY同时缩放);scaleX(x)元素仅水平方向缩放(X缩放);scaleY(y)元素仅垂直方向缩放Y缩放),但它们具有相同缩放中心点和基数,其中心点就是元素中心位置,缩放基数为1...scale(X,Y)用于对元素进行缩放,可以通过transform-origin对元素基点进行设置,同样基点在元素中心位置;基X表示水平方向缩放倍数,Y表示垂直方向缩放倍数,而Y一个可选参数...,如果没有设置Y值,则表示X,Y两个方向缩放倍数一样。...scaleY表示元素只Y(垂直方向)缩放元素,其基点同样元素中心位置,可以通过transform-origin来改变元素基点。...就是基于水平方向(X)和垂直方向(Y)重新定位元素,此属性值使用涉及到数学矩阵。 48、css3 动画(animation) CSS3 时代,动画不再必须依赖 js,变得更加简单、高效。

2.5K31

57道CSS常问面试题及答案汇总

也就是XY同时缩放);scaleX(x)元素仅水平方向缩放(X缩放);scaleY(y)元素仅垂直方向缩放Y缩放),但它们具有相同缩放中心点和基数,其中心点就是元素中心位置,缩放基数为1...scale(X,Y)用于对元素进行缩放,可以通过transform-origin对元素基点进行设置,同样基点在元素中心位置;基X表示水平方向缩放倍数,Y表示垂直方向缩放倍数,而Y一个可选参数...,如果没有设置Y值,则表示X,Y两个方向缩放倍数一样。...scaleY表示元素只Y(垂直方向)缩放元素,其基点同样元素中心位置,可以通过transform-origin来改变元素基点。...就是基于水平方向(X)和垂直方向(Y)重新定位元素,此属性值使用涉及到数学矩阵。 48、css3 动画(animation) CSS3 时代,动画不再必须依赖 js,变得更加简单、高效。

2K10

基础渲染系列(六)——凹凸

不幸,我们不知道这些函数是什么东西。但可以近似它们,可以比较纹理两个不同高度。例如,最末端,使用U坐标0和1。这两个样本之间差异这些坐标之间变化率。表示为函数,即f(1)-f(0)。...如你所料,Y分量存储G通道。但是,X分量存储A通道。不使用R和B通道。 为什么以这种方式存储X和Y? 使用四通道纹理仅存储两个通道似乎很浪费。当使用未压缩纹理时,的确如此。...(解码 DXT5nm 法线) 2.3 缩放凹凸 由于我们将法线烘焙为纹理,因此无法片段着色器缩放它们。或者还是可以呢? 可以计算Z之前缩放法线X和Y分量。...由于指令限制,定位Shader Model 2时,它也不支持缩放。因此,定位移动设备时,请勿依赖凹凸缩放。 ? 2.4 结合反照率和凹凸 现在我们有了功能性法线贴图,你可以检查它带来差异。...然后降低X和Y缩放比例,得到 ? 这种调整会夸大X和Y分量,从而沿陡峭坡度产生更明显凸起。但是,当一个法线平坦时,另一个法线不会改变。 为什么称为泛白混合?

3.6K40

116-R可视化36-把你长长坐标弄短

而因为二者长度并不相同,如果在图上显示等长线段,因为比例差异,UMAP_1 上显示长度相对较长,就会让我们错以为二者并非等长。...而且如果我想要给小坐标图坐标加点文字,就得用geom_text 坐标里寻找它们位置了。 如果拼图呢? 可直接拼接的话,没有办法得到这种覆盖效果。...把图层叠加上去 [[111-R可视化35-结合grid与ggplot输出]] 我们提过结合不同输出各种方法,同时也提到了可以通过annotation_custom 或是grid_panel方法直接实现不同...ggplot 图层叠加: 但问题,这种方法无法坐标框以外位置添加。...似乎左下角箭头被遮住了似的。 用图层叠放函数方法 反正坐标空隙都已经出来了,即使坐标图层位置叠放,也不难看

1.1K20

AutoCAD工程制图 常见命令与注意事项全总结(120例)

24.绘图时以定位线为标准画圆。技巧,剪断链接部分后点击删除 25.圆内功能,切点切点半径。或使用圆角(F)功能,右下角点击半径并输入后点击两个圆*(圆角只能外切关系)。...51.如果有两个角度,必须阵列两次。 52.负数据相反方向复制阵列 53.斜面图形绘制,斜面图形可先按照水平画,画完后再旋转。 54.标注样式注释菜单栏颜色上方。...59.特性快捷(ctrl+1)也可以加载线性下面找到。 60.比例1以上放大,比例1以下缩小。...4 93.制作半球:坡切或者利用大正方体su。先从球心画一条线定位。 94.绘制长方形时,@后数据分别是与XY对应。 95.拉伸面可以对实体面进行拉伸操作。...99.三维空间修剪(输入TR回车两次,输入P回车,输入V回车) 100.扫掠建模(SW):路径需要做成多段线(合并J),且路径与截面之间必须为相对关系,) 扫掠必须一个对象一个路径,两端截面不能不同形状

1.2K10

Three.js基础之变换3D对象 | 《Three.js零基础直通04》

/assets/lessons/05/step-01.png 移动 position位置属性又有3个基本变量,x,y和z。这些3D空间中用于定位3个轴向。...缩放 缩放也是一个具有x,y,z三个变量向量对象。创建3D对象时,默认缩放比例x,y和z皆为1,就是没有缩放意思。...如果将设置某一个值为0.5,则对象上将是原大小一半,如果设置为2,则在该上将是原大小2倍。 “试着更改这些值,去缩放场景立方体。”...但使用任意方法旋转时,两种方法对应值都会自动更新。 使用rotation rotation属性也具有x,y和z三个变量,和移动、缩放不同,这里旋转角度。...让我们逐个改变三个轴向旋转角度,然后对照辅助工具来观察旋转如何生效。 “关于旋转角度,你会使用π?”

3.5K20

5-3 绘制图形

u 实验步骤(1): 先定制坐标,确定坐标原点,依次画两条直线分别作为X,Y。因为窗体左上角坐标为(0,0),代码中使用坐标定位都是相对,相对于窗体左上角位置。...为了看得清楚,在窗体四周留出了一部分边缘,使用绝对像素值,将坐标原点定位在(30,窗体高度-100),按钮上方。随着窗体大小变化,横坐标根据窗体高度绘制不同位置。 ?...2、 使用ScaleTransform缩放坐标。 2....案例学习:按百分比绘制饼图 本次练习目标掌握绘制统计图形基本要领,绘制饼图并按比例填充不同颜色,饼图可以直接使用类库方法填充图形,不同在于统计类图形需和数据关联,如何获取数据并按不同数据绘制不同比例饼图实现关键...u 实验步骤(1): 绘制简单饼图,各部分比例由界面输入或直接指定,按比例生成饼图,不同部分使用不同颜色填充,多次创建画刷,添加代码: Rectangle r = new Rectangle(50,50,200,100

1.5K10

加工中心常用G代码和M代码大全,收藏好了!

我们使用数控加工中心过程,最常见数控代码有两种,一种G代码,一种M代码。本文整理了常见G代码和M代码含义,不同厂商不同数控系统可能稍有出入,实际以说明书为准。...G46 -- 刀具位置设定(缩小)   G47 -- 刀具位置设定(二倍)  G48 -- 刀具位置设定(减半)  G47.1 2 -- 主轴同时制御有效  G49 -- 刀具长设定取消  G50 -- 比例缩放取消...  G51 -- 比例缩放有效  G50.1 -- G指令镜象取消  G51.1 -- G指令镜象有效  G52 -- 局部坐标系设定  G53 -- 机械坐标系选择  G54 -- 工件坐标系(第一)...G61 -- 准确停止方式 G62 -- 镜像指令 G63 -- 攻丝方式 G64 -- 取消G61 G65 -- 宏调用子程序 G68 -- 旋转G17,G18,G19,X Y,Z,R G69 -- ... -- X镜象启动 M22 -- Y镜象启动 M23 -- 镜象取消 M24 -- 第四镜象启动 M25 -- 第四夹紧 M26 -- 第四松开 M27 -- 分度盘功能 M29 -- 刚性攻牙

27K1413

透视投影变换矩阵推导_矩阵投影

这一问题答案引导你到一个正交投影矩阵简化形式。考虑几点: 首先,可见空间中,摄像机定位在原点并且沿着z方向观看。...第二,你通常希望你视野左右方向上延伸同样远,并且z上下方向上也延伸同样远。如果这样情况,那么z正好直接穿过你视域体中心,所以得到了r = -l并且t = -b。...它启发我们注意到这个矩阵可以用两个简单变换串联替代:平移其次缩放。...由于空间体形状这种变换,透视投影不能像正交投影那样简单表达为一个平移和一个缩放。你必须制定一些不同东西。但是,这并不意味着你正交投影上做工作无用。...同时,直角当然彼此相等,所以两个三角形相似的。 对于相似三角形你应该感兴趣它们每对对应边都是同比例。你知道沿着z长度,它们n和z。

1.3K20

Matlab系列之二维图形(下)

zoom zoom用于图像缩放,跟随不同搭配组合,可以实现不同缩放形式,对应指令如下表 指令格式 说明 zoom xon 可按x进行缩放 zoom yon 可按y进行缩放 zoom on 当前图形可缩放...zoom off 当前图形不可缩放 zoom on和off相互切换 zoom out 还原到图形初始状态 zoom(factor) 设定具体缩放比例,默认值为2 Note:运行缩放指令后,单击可进行图形放大缩小...双坐标绘图 这个双坐标意思就是把两个不同量纲、不同数量级自变量对应因变量绘制同一张图上,且具有左右两个纵轴,和直接plot(x1,y1,x2,y2)结果有一点区别,具体指令plotyy...两个特殊绘图指令 在此处之前用到plot指令,都是针对已经得到数据,根据这些数据进行绘图,假如一个函数自变量变化趋势未知,那么使用plot指令,就可能出现间隔不合理,图形也没法很好反应函数效果...%x上采用常用对数进行标定,使用格式和plot相同,以下两个也一样 semilogy(...)%y上采用常用对数进行标定 loglog(...)

1.3K20
领券