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

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

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 其他说明

  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 安装,如下:

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)

%EHDY9PS{B84AL~@J)G)V]6.png


图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)

image.gif4[RQX5VAUD}J4KJ%_PQQTJW.png

图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)

IJL3]NLK`%G2A`41GJ7ZWKG.png


图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)

F)45ZIXB`Y72YJ`)$FLLY]C.png


图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)

image.gifD9B$)SY]W_3M628EE}M5TD7.png

图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)

TQT]6HHRO687RL25G1UE95X.png


图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)

WK[2_F`KDD{C0Q`(6F74Q6C.pngimage.gif

图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)

]C8D7R3V5NKFC$QXVL]00_T.png

图8 金字塔图黑白印刷风格绘制


3. 绘图失败的解决办法


  1. 解压缩包内绘图函数,并利用 source 函数加载包里绘图函数,在本地进行绘制,或者查看绘图函数本身是否有 BUG。
  2. 使用 AI 修图,具体推文见:画图细节不会改?那就用 AI 吧!
目录
相关文章
|
Ubuntu
ubuntu 22.04 阿里源
ubuntu 22.04 阿里源
12377 0
|
缓存 easyexcel Java
Java EasyExcel 导出报内存溢出如何解决
大家好,我是V哥。使用EasyExcel进行大数据量导出时容易导致内存溢出,特别是在导出百万级别的数据时。以下是V哥整理的解决该问题的一些常见方法,包括分批写入、设置合适的JVM内存、减少数据对象的复杂性、关闭自动列宽设置、使用Stream导出以及选择合适的数据导出工具。此外,还介绍了使用Apache POI的SXSSFWorkbook实现百万级别数据量的导出案例,帮助大家更好地应对大数据导出的挑战。欢迎一起讨论!
1412 1
|
8月前
|
机器学习/深度学习 算法
广义优势估计(GAE):端策略优化PPO中偏差与方差平衡的关键技术
广义优势估计(GAE)由Schulman等人于2016年提出,是近端策略优化(PPO)算法的核心理论基础。它通过平衡偏差与方差,解决了强化学习中的信用分配问题,即如何准确判定历史动作对延迟奖励的贡献。GAE基于资格迹和TD-λ思想,采用n步优势的指数加权平均方法,将优势函数有效集成到损失函数中,为策略优化提供稳定梯度信号。相比TD-λ,GAE更适用于现代策略梯度方法,推动了高效强化学习算法的发展。
929 3
广义优势估计(GAE):端策略优化PPO中偏差与方差平衡的关键技术
|
10月前
|
人工智能 自然语言处理 算法
阴阳怪气的路人与大师来啦
通义千问帮你分析了获奖文章的共性,包括创新性、实用性、完整性、技术深度和表达能力。根据这些标准,你的文章若能在技术细节、创新方法和实际应用方面有所突破,尤其是结合实际案例和效果展示,未来仍有机会获奖。虽然此次未获奖,但保持积极心态,持续创作高质量内容,相信你会取得更好的成绩。继续加油!
137 29
|
存储 人工智能 分布式计算
Parquet 文件格式详解与实战 | AI应用开发
Parquet 是一种列式存储文件格式,专为大规模数据处理设计,广泛应用于 Hadoop 生态系统及其他大数据平台。本文介绍 Parquet 的特点和作用,并演示如何在 Python 中使用 Pandas 库生成和读取 Parquet 文件,包括环境准备、生成和读取文件的具体步骤。【10月更文挑战第13天】
2531 60
|
11月前
|
存储 JSON API
淘宝直播间弹幕API接口(taobao.item_video_barrage)
淘宝直播间弹幕 API(`taobao.item_video_barrage`)用于获取直播间的弹幕数据。通过指定直播间 ID 和模式参数(如 `start` 建立连接、`refresh` 获取弹幕),可以获取弹幕消息列表、直播间信息等。响应数据为 JSON 格式,包含状态码、直播间 ID、连接状态和弹幕详情。使用时需注意权限限制、接口稳定性和数据处理。
|
12月前
|
存储 JavaScript 前端开发
decimal.js库的安装和使用方法
【10月更文挑战第24天】decimal.js 是一个非常实用的高精度计算库,通过合理的安装和使用,可以在 JavaScript 中实现精确的数值计算和处理。你可以根据具体的需求和项目情况,灵活运用该库来解决数字精度丢失的问题。
|
数据可视化 数据挖掘 Go
GOplot|宝藏R包,拯救你的GO富集结果,杜绝平庸的条形图
`GOplot`是一款R包,专注于GO富集分析的可视化,提供多种图表类型如GOBar、GOBubble、GOCircle、GOChord和GOVenn等。这些函数允许用户轻松修改参数,定制颜色、大小和排序,实现数据的直观展示。示例代码展示了如何使用这些功能创建不同类型的图形,并提到了一个配套的shiny应用。`GOplot`简化了复杂的数据可视化过程,适合快速高效地展示差异分析结果。
615 0
|
数据采集 数据可视化 数据挖掘
还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
本文讲解9种『炫酷高级』的数据图表,可视化地表示比例或百分比:哑铃图、甜甜圈图、华夫饼图、堆积条形图...附上代码,快快用起来吧!
1079 2
还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵