前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >读者投稿|绘制一系列黑白印刷风格图表

读者投稿|绘制一系列黑白印刷风格图表

作者头像
庄闪闪
发布2022-02-16 21:19:18
1.1K0
发布2022-02-16 21:19:18
举报

本篇推文由西南财经大学经济学院杜云晗投稿,由闪闪排版整理。以下是正文内容:

1. 基本说明

1.1 本包的目标

让使用者将注意力集中在参数设定与调整上,而不是代码使用的细节,类似于一个芯片封装的过程。对几个常用的绘图函数进行了封装,并调整为印刷风格供使用者做课题或写论文参考。

1.2 功能特色

设定好参数后,只需要一行代码便能绘制出印刷风格的 R 图像。

1.3 数据说明

本包内置数据集均为随机或手动生成,输入以下命令能够看到对应绘图函数的详细说明。

代码语言:javascript
复制
help(acchist)  #堆积柱状图黑白印刷风格绘制
help(bonbon)  #棒棒图黑白印刷风格绘制
help(boxeasy)  #箱线图黑白印刷风格绘制
help(densline)  #核密度图黑白印刷风格绘制
help(easyline)  #简单折线图黑白印刷风格绘制
help(histeasy)  #柱状图图黑白印刷风格绘制
help(linepoint)  #加点折线图黑白印刷风格绘制
help(pyramid)  #金字塔图黑白印刷风格绘制

1.4 其他说明

  1. 输入实际参数所对应的概念或者说变量准确的话,会自动转换数据类型为包函数运行所需的数值或字符型,无需手动转换。
  2. 本包内各绘图函数会自动判断是否安装或载入了所依赖的包,如 tidyverse 或 grid,无需每次手动安装或载入。(标准方法是封装函数时头挂一个依赖某包的关键字,不过本包为初学时封装,所以采用了包函数内增加代码判断的做法,读者查看包内源代码时应当能注意到)
  3. 人性化地内置了训练数据集,让使用者方便与自己的数据集数据结构进行比对,只要数据结构与训练数据集保持一致,就能绘制出对应的图形。
  4. 添加了简单的内存释放代码,每次绘图完成后无需清理内存中产生的临时数据。
  5. 为防止部分使用者因为系统问题和我一样出现渲染错误的情况,采取两次添加画布的做法,完成强制绘图,保证绘图过程顺利。

1.5 特别鸣谢

微信公众号“庄闪闪的 R 语言手册”提供的学习交流平台;来自“ tidy-R语言”群的哈尔滨商业大学张敬信教授,以及 Fin,无安书等群友在本包封装过程中给出的宝贵建议。

1.6 申明

本包封装纯属公益性质,目前为 0.1 版,后面估计不会有太多时间更新。大家可以自行在本包基础上进行改装。如确有难以解决的 BUG,请联系西南财经大学经济学院杜云晗 1270950448@qq.com。

2. 使用示例

2.1 安装说明

第一次使用需从 Github 安装,如下:

代码语言:javascript
复制
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 堆积柱状图黑白印刷风格绘制

代码语言:javascript
复制
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 棒棒图黑白印刷风格绘制

代码语言:javascript
复制
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 箱线图黑白印刷风格绘制

代码语言:javascript
复制
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 简单折线图黑白印刷风格绘制

代码语言:javascript
复制
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 核密度图黑白印刷风格绘制

代码语言:javascript
复制
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 柱状图黑白印刷风格绘制

代码语言:javascript
复制
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 加点折线图黑白印刷风格绘制

代码语言:javascript
复制
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 金字塔图黑白印刷风格绘制

代码语言:javascript
复制
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. 绘图失败的解决办法

  1. 解压缩包内绘图函数,并利用 source 函数加载包里绘图函数,在本地进行绘制,或者查看绘图函数本身是否有 BUG。
  2. 使用 AI 修图,具体推文见:画图细节不会改?那就用 AI 吧!
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 基本说明
    • 1.1 本包的目标
      • 1.2 功能特色
        • 1.3 数据说明
          • 1.4 其他说明
            • 1.5 特别鸣谢
              • 1.6 申明
              • 2. 使用示例
                • 2.1 安装说明
                  • 2.2 堆积柱状图黑白印刷风格绘制
                    • 2.3 棒棒图黑白印刷风格绘制
                      • 2.4 箱线图黑白印刷风格绘制
                        • 2.5 简单折线图黑白印刷风格绘制
                          • 2.6 核密度图黑白印刷风格绘制
                            • 2.7 柱状图黑白印刷风格绘制
                              • 2.8 加点折线图黑白印刷风格绘制
                                • 2.9 金字塔图黑白印刷风格绘制
                                • 3. 绘图失败的解决办法
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档