admin管理员组文章数量:1437378
patchwork拼图对不齐怎么办?
下面来看看最近一位学员遇到的问题,他是一个绘图的问题:
起初我以为就是个简单的拼图呢,然后设置一下图片拼接的高度和宽度就可以了!
学员把他的结果发过来我才发现不是这样的!
下面来看看吧~
拼图问题重现
拿到学员发来的数据和代码(已获得学员准许图片打码发公众号),拼图方式如下:
代码语言:javascript代码运行次数:0运行复制# install.packages("magick")
library(magick)
library(pdftools)
library(cowplot)
library(ggplot2)
library(patchwork)
pdf_convert("barplot1.pdf", format = "png", pages = 1, dpi = 300)
pdf_convert("barplot.pdf", format = "png", pages = 1, dpi = 300)
img1 <- image_read("barplot1_1.png")
p1 <- ggdraw() + draw_image(img1)
p1
class(p1)
pdf_convert("vioplot1.pdf", format = "png", pages = 1, dpi = 300)
pdf_convert("vioplot.pdf", format = "png", pages = 1, dpi = 300)
img3 <- image_read("vioplot1_1.png")
p3 <- ggdraw() + draw_image(img3)
p3
p <- p1 / p3
p
结果如下:
完美重现了学员的问题!
一开始我想不明白这两个图为啥要用已经生成好的pdf转成png然后读取进来再拼图呢?
详细询问看了其他的代码才知道,这两个图都是基础函数绘制保存pdf,难怪呢!走了弯路呀!
解决方案
我尝试解决的过程中,尝试了不少的参数,尤其是 patchwork 拼图的时候的height, width, 以及转为ggplot2后的theme主题发现都没有什么用,
后面发现第一个问题是图片在窗口里面显示的时候不对齐,但是只要保存出去,在文件里面看效果不一样:
代码语言:javascript代码运行次数:0运行复制ggsave(file="tset.pdf", width = 6.7,height = 8)
接下来我又看了看这个代码的其他参数,然后调整如下:
draw_image
这个函数里面的 scale = 1,width = 1.08, halign=0
是关键,
- scale:图片缩放,大于1就会具有放大镜的效果
- width = 1.08:图片横向拉伸和压缩的效果
- halign:图片读取进来靠水平左边对齐
- ggsave:这个函数的width, height 调整到一个合适的比例
img1 <- image_read("barplot1_1.png")
p1 <- ggdraw() + draw_image(img1,scale = 1,width = 1.08,halign=0)
p1 <- ggplotify::as.ggplot(p1)
img3 <- image_read("vioplot1_1.png")
p3 <- ggdraw() + draw_image(img3,width = 0.95,halign=0)
p3 <- ggplotify::as.ggplot(p3)
p <- wrap_plots(p1, p3, ncol = 1, heights = c(1,1)) + # 两行一列
plot_annotation(tag_levels = 'A')
ggsave(file="tset.pdf", width = 6.7,height = 8)
最终效果如下:
完美!
还有其他的解决办法吗?
当然,这个问题其实最快的就是在AI里面调整,因为都是pdf文件,对齐就不在话下啦!
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-26,如有侵权请联系 cloudcommunity@tencent 删除函数压缩imagepdfpng本文标签: patchwork拼图对不齐怎么办
版权声明:本文标题:patchwork拼图对不齐怎么办? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747497972a2700161.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论