栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

如封面所示,如何使用R语言制作一张海报

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如封面所示,如何使用R语言制作一张海报

细心的读者应该发现,在公众号上篇推文的底部,多了一个「推荐阅读」栏目以及一张如下图所示的图片:

这幅图构图也非常简单:左侧是学堂的公众号、知乎、b站和学堂君微信号的二维码,右侧是两栏介绍文案。

完整代码

图片绘制过程完全是由R语言完成的,完整代码如下,细节说明见下文,二维码素材可以在后台发送「示例数据」获取。

library(imager)
opar = par(no.readonly = F)
gzh = load.image("129.二维码/公众号二维码.jpg")
wx = load.image("129.二维码/wechat.jpg")
bz = load.image("129.二维码/b站2.jpg")
zh = load.image("129.二维码/知乎.jpg") 

jpeg("poster.jpeg", width = 12, height = 8, units = "in", res = 600)
par(opar)
par(plt = c(0,1,0,1))
plot.new()
box()

par(fig = c(0.02,0.28,0.5,1), new = T)
plot(gzh, ann = F, axes = F)

par(fig = c(0,0.317,0.02,0.55), new = T)
plot(zh, xlim = c(0, 1200), ann = F, axes = F)

par(fig = c(0.24,0.54,0.42,0.95), new = T)
plot(bz, ann = F, axes = F)

par(fig = c(0.28,0.54,0,0.5), new = T)
plot(wx, ann = F, axes = F)

par(fig = c(0,1,0,1), new = T)
plot(1, type = "n", xlim = c(0,1), ylim = c(0,1), ann = F, axes = F)
segments(0.55, 0, 0.55, 1, lty = 2)
segments(0.58, 0.5, 1, 0.5, lty = 2)  

arrows(0.1,1.02,0.1,0.985, length = 0.2)
segments(0.1,1.02, 0.8, 1.02, lty = 2)
segments(0.8,1.02,0.8,0.985)
text(0.8,0.95, "「R语言学堂」公众号", font = 2, cex = 2)
text(0.8, 0.8, "数据处理通识专辑、制表与可视化专辑nn数学模型专辑、地理制图与分析专辑", cex = 1.5)
text(0.58, 0.65, "后台或推文底部发消息发送「关键词」:", adj = 0, font = 2, cex = 1.5)
text(0.58, 0.58, "推文合集、示例数据、合作交流", adj = 0, cex = 1.5)

arrows(0.4,-0.02, 0.4,0.015, length = 0.2)
segments(0.4,-0.02, 0.8, -0.02, lty = 2)
segments(0.8,-0.02,0.8,0.015)
text(0.8,0.05, "「学堂君」微信号", font = 2, cex = 2) 
text(0.58, 0.3, "自媒体同行交流(转载、互推等)nn商务合作(理财类不接)nn读者付费咨询", 
     adj = 0, cex = 1.5)

dev.off()
细节说明 加载外部图片

本文使用的二维码图片格式都是jpeg/jpg,这种格式的图片可以通过imager工具包中的load.image()函数加载。加载过后,可以使用plot()函数再在R环境中绘制出来。

library(imager)
gzh = load.image("129.二维码/公众号二维码.jpg")
plot(gzh)
隐藏边框、坐标轴

plot()函数的axes参数控制是否显示边框和坐标轴,ann参数控制是否显示坐标轴标签和图象标题。完整的参数介绍见推文基础绘图系统(一)——主函数plot及其参数。

plot(gzh, ann = F, axes = F)
图象叠加

plot()函数作为基础绘图系统的高级函数,每次使用都默认打开新的绘图界面。若想进行图层叠加,需要在使用第二个及其以后的高级绘图函数前运行语句par(new = T)。叠加图象的位置可以由fig参数设置。

par(plt = c(0,1,0,1))
plot.new()
box()

par(fig = c(0.02,0.28,0.5,1), new = T)
plot(gzh, ann = F, axes = F)
低级函数

图片中的外边框(box())、虚线(segments())、箭头(arrows())、文字(tex())都是使用对应的低级函数绘制的。低级函数只能在原图层上叠加要素,不能打开新绘图界面。

par(plt = c(0,1,0,1))
plot.new()
box()

par(fig = c(0,1,0,1), new = T)
plot(1, type = "n", xlim = c(0,1), ylim = c(0,1), ann = F, axes = F)
segments(0.55, 0, 0.55, 1, lty = 2)
segments(0.58, 0.5, 1, 0.5, lty = 2)  

arrows(0.1,1.02,0.1,0.985, length = 0.2)
segments(0.1,1.02, 0.8, 1.02, lty = 2)
segments(0.8,1.02,0.8,0.985)
text(0.8,0.95, "「R语言学堂」公众号", font = 2, cex = 2)

arrows(0.4,-0.02, 0.4,0.015, length = 0.2)
segments(0.4,-0.02, 0.8, -0.02, lty = 2)
segments(0.8,-0.02,0.8,0.015)
text(0.8,0.05, "「学堂君」微信号", font = 2, cex = 2)
  • 如果要进行字体设置,可以参考推文showtext | R语言绘图字体设置——针对Windows系统。

保存图片和反复试验

一些参数的设置不是一蹴而就的,尤其是控制位置、大小的参数,需要反复试验进行调整。图片效果除和参数有关外,还和输出尺寸有关,因此需要将图片输出到本地后观察效果。

保存jpeg/jpg格式的图片的方法如下:

jpeg("E:/poster.jpeg", width = 12, height = 8, units = "in", res = 600)

...code...

dev.off()

保存pdf格式的图片的方法如下:

pdf("E:/poster.pdf", width = 12, height = 8, units = "in")

...code...

dev.off()
  • pdf格式为矢量图片,不需要设置分辨率。

制作海报

相信各位读者在看完本文后,应该能够举一反三,知道如何使用R语言绘制一张海报了。

推荐阅读
ggplot2基础语法系列推文汇总
胶水函数用法的几个例子
空间计量经济模型的简单形式在R语言中的实现
使用R语言的常用工具包绘制双变量填充地图
R语言基础绘图系统的拼图功能

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号