R语言

*R一种能够解决由于坐标长度不一导致的图宽不一问题的办法

2021-07-08  本文已影响0人  曲凉不见

AI改图很方便
但是太多图一起改,尤其是这种因为图大小不一导致的手动修改,实在是浪费精力
图大小不一的原因很多,能够控制的地方尽量都控制了,但是由于坐标长度导致的size不一致,一致没有解决
直到我找到了一个笨办法
笨办法也行,只要能解放双手,都是好办法

问题描述:
难看的图

比如这种,ggplot里facet_grid画图能一次画很多,但是出图后发现图竟然不一样大
主要原因是,facet_grid能够让出图后的总体大小一致(包括y轴数字后)。但是有时候就是需要调整,让框都在一个水平/垂直线上

解决办法:
theme(axis.y.text=element_text(margin=margin(0,0,0,0.873,"line")))

20000是五位数,1000是四位数,相差一位数。一位数就是0.873,差两位数是0.873*2,以此类推。
为什么是0.873呢

是我在AI里算的 复杂
谁能告诉我,怎么样把图放在字后面,竟然给表情包单开一行。。。

具体算法是:
我先画了四个一模一样的图,区别只是
p1=原图
p2=theme(axis.y.text=element_text(margin=margin(0,0,0,1,"pt")))
p3=theme(axis.y.text=element_text(margin=margin(0,0,0,1,"line")))
p4=theme(axis.y.text=element_text(margin=margin(0,0,0,1,"cm")))
cowplot::plot_grid(p1,p2,p3,p4,ncol=1)
出图后,AI里拿直线对标到每个图的左边框,看看他们分别差了多少mm(AI里的距离)
发现1pt竟然比原图还靠左,1line差了2.021mm,1cm差了9.225mm
说明R里的line和cm和AI里的稍有不同

同时我也看了看一个AI里的数字宽度是1.766mm(0,1,2,3都是一样的宽度)
因此,如果我想改动一个数字的距离,换算回R里应该是1.766/2.021=0.873 line 或者 1.766/9.225=0.191 cm

再次画图
p1=原图(y轴最长五位数)
p2=原图(y轴最长四位数)+ theme(axis.y.text=element_text(margin=margin(0,0,0,0.873,"line")))
p3=原图(y轴最长四位数)+ theme(axis.y.text=element_text(margin=margin(0,0,0,0.191,"cm")))
cowplot::plot_grid(p1,p2,p3,ncol=1)
放到AI里发现p1和p3一样宽了,p4还是不可以(不懂为什么)


调整后
讨论:

此方法只局限于字体大小是R默认,没有人为改动的,假如你的图的坐标字体有别的设定,这个值要重新算;
只实验了Y轴,X轴也同理,但是不再赘述;
我的水平局限于只能找到margin的解决办法,而且margin的单位我也只知道这几个,其它是都不知道,也许有更合适的,可能会更方便修改

上一篇下一篇

猜你喜欢

热点阅读