1. 基本说明
1.1 本包的目标
让使用者将注意力集中在参数设定与调整上,而不是代码使用的细节,类似于一个芯片封装的过程。对几个常用的绘图函数进行了封装,并调整为印刷风格供使用者做课题或写论文参考。
1.2 功能特色
设定好参数后,只需要一行代码便能绘制出印刷风格的 R 图像。
1.3 数据说明
本包内置数据集均为随机或手动生成,输入以下命令能够看到对应绘图函数的详细说明。
help(acchist) #堆积柱状图黑白印刷风格绘制 help(bonbon) #棒棒图黑白印刷风格绘制 help(boxeasy) #箱线图黑白印刷风格绘制 help(densline) #核密度图黑白印刷风格绘制 help(easyline) #简单折线图黑白印刷风格绘制 help(histeasy) #柱状图图黑白印刷风格绘制 help(linepoint) #加点折线图黑白印刷风格绘制 help(pyramid) #金字塔图黑白印刷风格绘制
1.4 其他说明
- 输入实际参数所对应的概念或者说变量准确的话,会自动转换数据类型为包函数运行所需的数值或字符型,无需手动转换。
- 本包内各绘图函数会自动判断是否安装或载入了所依赖的包,如 tidyverse 或 grid,无需每次手动安装或载入。(标准方法是封装函数时头挂一个依赖某包的关键字,不过本包为初学时封装,所以采用了包函数内增加代码判断的做法,读者查看包内源代码时应当能注意到)
- 人性化地内置了训练数据集,让使用者方便与自己的数据集数据结构进行比对,只要数据结构与训练数据集保持一致,就能绘制出对应的图形。
- 添加了简单的内存释放代码,每次绘图完成后无需清理内存中产生的临时数据。
- 为防止部分使用者因为系统问题和我一样出现渲染错误的情况,采取两次添加画布的做法,完成强制绘图,保证绘图过程顺利。
1.5 特别鸣谢
微信公众号“庄闪闪的 R 语言手册”提供的学习交流平台;来自“ tidy-R语言”群的哈尔滨商业大学张敬信教授,以及 Fin,无安书等群友在本包封装过程中给出的宝贵建议。
1.6 申明
本包封装纯属公益性质,目前为 0.1 版,后面估计不会有太多时间更新。大家可以自行在本包基础上进行改装。如确有难以解决的 BUG,请联系西南财经大学经济学院杜云晗 1270950448@qq.com。
2. 使用示例
2.1 安装说明
第一次使用需从 Github 安装,如下:
rm(list = ls()) if (is.element("chip", installed.packages()[, 1]) == FALSE) { if (is.element("devtools", installed.packages()[, 1]) == FALSE) { install.packages("devtools") library(devtools) } else if (is.element("devtools", installed.packages()[, 1]) == TRUE) { library(devtools) } install_github("youngyaoguai/Rdraw/chip0.1/chip") library(chip) } else if (is.element("chip", installed.packages()[, 1]) == TRUE) { library(chip) }
由于网络问题而无法下载的读者,请用百度网盘直接下载压缩包,链接为:https://pan.baidu.com/s/1Xhu8DH4bcjw8AedRIb3Dbw 提取码:8712。然后本地安装该包,具体教程见:如何本地安装 R 包。
2.2 堆积柱状图黑白印刷风格绘制
help(acchist) #查看函数说明 data("acchist_test_data",package = "chip") #加载包内置数据集 View(acchist_test_data) #查看内置数据集结构 axis.x.title <- c("region") #x轴标题 axis.y.title <- c("ratio") #y轴标题 individual.name <- c("B","C","D","E","F") #区域名称 fill.name <- c("academic","vocational","college","high","further","primary") #要填充的名称 bar_width <- 0.3 #柱子宽度 axis.title.size <- 30 #坐标轴标题大小 axis.text.x.size <- 30 #x轴的文本显示大小 axis.text.y.size <- 30 #y轴的文本显示大小 legend.text.size <- 30 #图例的文本显示大小 legend.title.size <- 30 #图例标题大小 #调用绘图函数 acchist(acchist_test_data,acchist_test_data$region,acchist_test_data$edu,acchist_test_data$ratio)
图1 堆积柱状图黑白印刷风格绘制
2.3 棒棒图黑白印刷风格绘制
help(bonbon) #查看函数说明 data("bonbon_test_data",package = "chip") #load integration sample data #载入内置数据集 View(bonbon_test_data) #查看数据结构 #要着重显示的个体(如果没有要着重显示的个体,请设置为outstanding <- c(“ ”)) outstanding <- c("wholesaleretail","Leasing and business services","realestate") outstanding.label <- c("24.75%","28.51%","5.16%") #要着重显示的个体的数据标签,需要和outstanding一并调整 outstanding.label.size <- 7 #要着重显示的个体的数据标签大小 outstanding.size <- 4 #要着重显示的个体的棒状物大小 not.outstanding.size <- 2.3 #不需要着重显示的个体的棒状物大小 outstanding.head.size <- 7 #要着重显示的个体的棒状物圆头大小 not.outstanding.head.size <- 5 #不需要重显示的个体的棒状物圆头大小 axis.title.x.size <- 30 #x轴标题大小 axis.text.y.size <- 30 #y轴的文本大小 value.max <- 100 #样本最大值 value.break <- c(0,value.max%/%3,78,100) #要在x轴上显示的样本数值点 xlab.name <- c("ratio of service industry(%)") #x轴标题 #所有个体名称排序,会按照从左往右的顺序绘制,绘制结果为从下到上 individual.name <- c("Leasing and business services","wholesaleretail","scientificresearch","Accommodation and Catering","Informationtransmission","culture","socialwork","publicfacilities","residentsservice","financial","education","transportation","publicmanagement","realestate") bonbon(bonbon_test_data,bonbon_test_data$industry,bonbon_test_data$index)
图2 棒棒图黑白印刷风格绘制
2.4 箱线图黑白印刷风格绘制
help(boxeasy) #查看绘图函数说明 data("box_test_data",package = "chip") #载入内置数据集 View((box_test_data) #查看数据结构 ylab.name <- c("index") #y轴标题 xlab.name <- c("year") #x轴标题 axis.title.x.size <- 15 #x轴标题大小 axis.title.y.size <- 15 #y轴标题大小 axis.text.x.size <- 15 #x轴文本大小 axis.text.y.size <- 15 #y轴文本大小 #调用函数 boxeasy(box_test_data,box_test_data$year,box_test_data$index)
图3 箱线图黑白印刷风格绘制
2.5 简单折线图黑白印刷风格绘制
help(easyline) #查看函数说明 data("easyline_test_data",package = "chip") #载入内置数据集 View(easyline_test_data) #查看数据结构 ylab.name <- "population" #y轴标题 xlab.name <- "age" #x轴标题 axis.title.x.size <- 25 #x轴标题大小 axis.title.y.size <- 25#y轴标题大小 axis.line.x.thickness <- 0.5 #x轴粗细 axis.line.y.thickness <- 0.5 #y轴粗细 axis.text.x.size <- 20 #x轴文本大小 axis.text.y.size <- 20 #y轴文本大小 x.start <- 0 #x轴开始数值 x.end <- 100 #x轴结束数值 x.interval <- 10 #x轴数值间隔 y.start <- 0 #y轴开始数值 y.end <- 21571 #y轴结束数值 y.interval <- 5000 #y轴数值间隔 #调用函数 easyline(easyline_test_data,easyline_test_data$population,easyline_test_data$age)
图4 简单折线图黑白印刷风格绘制
2.6 核密度图黑白印刷风格绘制
help(densline) #查看说明 data("densline_test_data",package = "chip") #载入内置数据集 View(densline_test_data) #查看数据结构 yscope <- c() #第一次使用无法知道具体的范围,填空 xscope <- c() #第一次使用无法知道具体的范围,填空 #根据数据集从左往右填写 legend.name <- c("line1","line2","line3","line4","line5") #调用函数 densline(test_data) #根据图示大概知道数值范围,进行微调 yscope <- c(0.0004,0.00155) xscope <- c(0,1000) legend.name <- c("line1","line2","line3","line4","line5") densline(densline_test_data)
图5 核密度图黑白印刷风格绘制
2.7 柱状图黑白印刷风格绘制
help(histeasy) # 查看帮助 data("hist_test_data ",package = "chip") #载入内置数据集 View(hist_test_data) #查看数据结构 x.size <- 2 #x轴文本大小 y.size <- 2 #y轴文本大小 lab.size <- 2 #坐标轴标题大小 legend.x <- 30 #图例水平位置 legend.y <- 0.3 #图例垂直位置 legend.x.distance <- 0.1 #图例中图片和文本的距离 axisname.x <- c("region") #x轴标题 axisname.y <- c("ratio") #y轴标题 type.name = c("0-14","15-64","65+","immortality") #不同类别 individual.name=c("A","B","C","D","E") #不同个体 histeasy(hist_test_data,hist_test_data$region,hist_test_data$age,hist_test_data$ratio)
图6 柱状图黑白印刷风格绘制
2.8 加点折线图黑白印刷风格绘制
help(linepoint) data("line_test_data",package = "chip") View(line_test_data) #查看内置数据集数据结构 start <- 2009 #x轴开始数值 end <- 2019 #x轴结束数值 interval <- 2 #x轴数值间隔 axis.text.x.size <- 30 #x轴文本大小 axis.text.y.size <- 30 #y轴文本大小 legend.title.size <- 30 #图例标题大小 legend.text.size <- 30 #图例文本大小 axis.title.x.size <- 30 #x轴标题大小 axis.title.y.size <- 30 #y轴标题大小 axis.line.x.size <- 0.5 #x轴粗细 axis.line.y.size <- 0.5 #y轴粗细 geom.point.size <- 7 #折线点大小 ylab.name <- c("index") #y轴标题 xlab.name <- c("year") #x轴标题 individual.name <- c("A","B","C","D","E") #个体名称 legend.name <- c("region") #图例标题 linepoint(line_test_data,line_test_data$region,line_test_data$index,line_test_data$year)
图7 加点折线图黑白印刷风格绘制
2.9 金字塔图黑白印刷风格绘制
help(pyramid) View(pyramid_test_data) #查看内置数据集数据结构 data("pyramid_test_data",package = "chip") #load integration sample data v_max <- 4400 #样本中的最大数值 middle.size <- 6.6 #中间文本大小 left.axis.title.x.size <- 30 #左边x轴标题大小 left.axis.text.x.size <- 30 #左边x轴文本大小 right.axis.title.x.size <- 30 #右边x轴标题大小 right.axis.text.x.size <- 30 #右边x轴文本大小 right.title <- c("女") #右边x轴标题 left.title <- c("male") #左边x轴标题 pyramid(pyramid_test_data,pyramid_test_data$male,pyramid_test_data$female,pyramid_test_data$group,pyramid_test_data$group_name)
图8 金字塔图黑白印刷风格绘制
3. 绘图失败的解决办法
- 解压缩包内绘图函数,并利用 source 函数加载包里绘图函数,在本地进行绘制,或者查看绘图函数本身是否有 BUG。
- 使用 AI 修图,具体推文见:画图细节不会改?那就用 AI 吧!。