科研论文配图的绘制与配色基础(一)

您所在的位置:网站首页 科研制图配色模板 科研论文配图的绘制与配色基础(一)

科研论文配图的绘制与配色基础(一)

2024-06-19 15:05| 来源: 网络整理| 查看: 265

1.1 科研论文配图的绘制基础 1.1.1 绘制规范

不同学术期刊在图名、字体、坐标轴以及颜色选择、配图格式等方面都有其特有的要求。

1.科研论文配图的分类与构成

科研论文配图可分为线性图、灰度图、照片彩图和综合配图 4 种类型。其中,线性图是主要和常用的配图类型。 线性图是指由包括Python、R、MATLAB 等编程软件,以及 Excel、SPSS、Origin(OriginLab 公司出品)等集成软件在内的绝大多数数据分析工具输出的多种插图样式,如折线图、散点图、柱形图等。这类 插图是科技论文中常见的图表类型,也是一种加工费时、设置细节较多的图表类型。 科研论文配图主要包括 X 轴(X axis,又称横轴)、Y 轴(Y axis,又称纵轴)、X 轴标签(X axis label)、Y轴标签(Y axis label)、主刻度(Major tick)、次刻度(Minor tick)和图例(Legend) 等。

注意:插图中的标签文本的大小、是否使用斜体、是否添加图例边框、是否添加网格线 2.科研论文配图的格式和尺寸

科研论文中常见的插图格式有像素图和矢量图。其中,像素图(位图)是以单个像素为单位,通过对像素进行组合和排列来显示图片格式。像素图在放大到一定程度后,会失真,变得模糊。常见的像素图格式包括 JPEG、PSD、PNG、TIFF,其中,JEPG 是一种常用的有损压缩图片格式,处理起来较容易,但像素分辨率低、清晰度差、色彩损失大。矢量图是使用点、直线或多边形等基于数学方程的几何图元表示的图像。矢量图的图像文件包含独立的分离图像,可以自由、无限制地进行重新组合,其特点是放大后图像不会失真,也就是说,与分辨率无关。常见的矢量图格式包括 EPS、PDF、AI、SVG,其中,EPS 格式的图片文件小、显示质量高、色彩保真度高,印刷时的字样较为清晰,是常用的论文配图格式;AI 格式是一种可以二次修改的图片格式,也是常用的插图格式,其体积较大,包含图片各图层的所有信息。 对于像素图,一般的科学引文索引(Science Citation Index,SCI)期刊都要求插图的分辨率大于 300dpi(dpi 是表示空间分辨率的计量单位,即每英寸可分辨的点数)。

注意:不能一味地追求高分辨率的像素图,因为分辨率太高,相应的插图文件就很大,易造成投稿困难。 3. 科研论文配图中的字体和字号设置

英文科技期刊大多使用 Arial、Helvetica 或 Times New Roman 字体。值得注意的是,单篇科研论文中的所有插图的字体、字号要尽量保持一致,同一幅插图中的字体必须一致。如果插图中确有需要突出的部分,则可以将它们设置为粗体或斜体形式,或者更改文字颜色。 中文期刊字体设置为宋体或黑体。

4. 科研论文配图的版式设计、结构布局和颜色搭配 版式设计:配图中文字的字体要保持一致,字号不大于正文字体;行距、文字间距应与正文协调一致。结构布局:配图应出现在引用文字的下方或右侧,“先文后图”;不同尺寸的配图不要安排在同一行或同一列。颜色搭配:避免使用过亮或过暗的颜色,相邻的图层元素不宜采用相近的颜色(特别是在分类插图中华);对于彩色图,我们要使用原图,慎用灰度图表示。 1.1.2 绘制原则 1. 必要性原则

科研论文配图的主要应用场景包括结构表达、体系构建、模型研究、数据预处理及分析、调查统计等。 如何判断是否需要配图? 如果配图可以起到补充说明文字、直观展示结果、引出下文内容等作用,那么它就是必要的。

注意:避免文字较少图标较多的情况:无需将原始数据和中间处理过程涉及的插图全部展示在论文中,应在有复杂和多维数据的情况下,提高精选插图的能力,而非简单地对其插图。(过多的插图会消耗大量的绘制时间) 2.易读性原则

方便读者准确理解科研论文配图的内容。

3. 一致性原则 配图所表达出的内容与上下文或者指定内容描述一致 :科研论文中的插图虽然可以独 立存在,但也应与上下文中介绍插图的内容或者指定的内容一致。此外,论文配图中 的物理量缩写、符号等都应与论文正文中介绍的保持一致。配图数据与上下文保持一致 :论文配图中的有效数字是根据配图上下文中的实数据或 者不同测量、转换方法等最终确定的。插图比例尺和缩放比例大小保持一致 :涉及地理空间插图的绘制时,插图中包含的比 例尺等图层元素,在修改时应保持与缩放的比例大小相一致 ;在修改插图的大小时, 也应与缩放的比例大小相一致。类似配图各图层要素保持一致 :当论文中出现多个类似配图时,我们应当保证各配图 中的文本属性(大小、字体、颜色)、符号,以及配图中各图层结构等保持一致。 1.2 科研论文配图的配色基础 1.2.1 色彩模式

常见的色彩模式: RGB 色彩模式、CMYK 色彩模式和 HEX 色彩模式

1. RGB色彩模式

RGB 色彩模式是指通过混合红(Red)、绿(Green)、蓝(Blue)3 种颜色来表现各种色彩。该色彩模式利用红、绿、蓝 3 个颜色通道的变化,以及它们相互之间的叠加来得到各种颜色值,是目前使用较为广泛的颜色系统。RGB 色彩模式为图片中每一个像素的 R、G、B 各分配一个强度值(取值范围为 0 ~ 255),如黑色可表示为 (0,0,0),白色可表示为 (255,255,255)。 RGB色彩模式

2. CMYK色彩模式

CMYK 色彩模式可以看作 RGB 色彩模式的子集。它是一种主要用于彩色印刷的四色模型,其中,C 表示青色(Cyan),M 表示品红色(Magenta),Y 表示黄色(Yellow),K 表示黑色(blacK)。与 RGB 色彩模式的不同之处在于,CMYK 色彩模式是一种印刷色彩模式,也是一种依靠反光的色彩模式。尽管RGB 色彩模式表示的颜色更多,但并不表示它们能够全部印刷出来。理论上,把青色、品红色、黄色混合在一起,就可以得到黑色,但是,依照目前的工艺制造水平,三者混合后得到的实际结果是暗红色,因此,我们需要加入一种专门的黑墨来中和,即使用定位套版色(黑色)(Key Plate(Black)),以确保输出黑色。在现阶段,大多数纸质期刊在稿件出版阶段都会要求图片使用 CMYK 色彩模式。对于网络版本的期刊,我们应该使用 RGB 色彩模式,因为使用该色彩模式的图片,其表现效果好,色彩靓丽,更适合在网络上传播。 在这里插入图片描述

3. HEX色彩模式

HEX 色彩模式,又称十六进制色彩模式,它和 RGB 色彩模式的原理类似,都是通过红、绿、蓝三原色的混合而产生各种颜色。HEX 色彩模式常用于在代码中表示颜色,这一点方便我们在利用代码绘制科研论文配图时更换颜色。HEX 色彩模式采用 6 位十六进制数来表示颜色,而 RGB 色彩模式中的 R、G、B 则采用 1 个十进制数来表示。简单来说,HEX 色彩模式就是将 RGB 色彩模式中的每个十进制数转换为对应的两位十六进制数来表示,并以“#”号开头,且 3 个字节的顺序如下,字节 1 表示红色值(颜色类型为红色),字节 2 表示绿色值(颜色类型为绿色),字节 3 表示蓝色值(颜色类型为蓝色),1 个字节表示 00 ~ FF 范围内的数字。需要注意的是,HEX 色彩模式中每个字节必须包含两位十六进制数,对于经过十进制数(0 ~ 255)转换后只有一位十六进制数的情况,我们应在这个十六进制数之前补零。例如,十进制数 0 转换为十六进制数后仍为 0,但是,我们要在 HEX 色彩模式中将它表示为“00”。 在这里插入图片描述

1.2.2 色轮配色原理

色轮(color wheel)又称色环,一般由 12 种基本颜色按照圆环方式排列组成。它是一种人为规定的色彩排列方式。它不但可以帮助用户更好地研究色彩变换和色彩搭配规律,而且允许用户自行设计具有个人风格的配色方案。常见的色轮配色方案有单色配色方案(monochromatic color scheme)、互补色配色方案(complementary color scheme)、等距三角配色方案(triadic color scheme)和四角配色方案(tetradic color scheme)等

1. 单配色方案

在科研论文配图的绘制过程中,单色配色方案常被用于表示有直接关系、关系较为密切或同系列的数据

注意:种类不宜过多,3 ~ 5 种较为合适 2. 互补色配色方案

当只能选择两种颜色时,我们可参考互补色配色方案进行选择。色轮上间隔 180°(相对) 的两种颜色为互补色。互补色具有强烈的对比效果,因此,它可用于科研论文配图中观察组数 据和对照组数据的可视化表达。

3. 等距三角配色方案

等距三角配色方案是指将色轮上彼此间隔 120°的 3 种颜色进行组合。等距三角配色方案会让配图的颜色更加丰富,但它在科研论文配图绘制的过程中应用较少。

4. 四角配色方案

四角配色方案有两种,一种是图 1-2-4(d)中实线表示的两对互补色组成的矩阵配色方案,另一种是图 1-2-4(d)中虚线表示的方形配色方案(square color scheme)。四角配色方案的优点是能够使配图的颜色更加丰富,缺点是使用时具有很大的挑战性,容易造成色彩杂乱,很多用户其实很难平衡自己选择的多种颜色。在科研论文配图的颜色选择过程中,我们要尽量避免使用四角配色方案。

1.2.3 颜色主题

不同的绘图工具(如 Python 中常用的绘图工具 Matplotlib 和 Seaborn)都有其颜色主题。颜色主题是按照一定的美学规律设计出来的,对其灵活使用可以提高插图的美观度。颜色主题对用户(尤其是初学者)友好,使用户不必将大量时间浪费在配色的选择上。用户可根据自身绘图需求选择合适的颜色主题或自定义颜色主题。一些英文期刊会有自己的一套颜色主题,用户在投稿时将插图配色更改为期刊要求的颜色主题即可。 Matplotlib 库的颜色主题主要包括 3 种类型:单色系(sequential)、双色渐变色系(diverging) 和多色系(qualitative)。

1. 单色系

单色系主题中颜色的色相基本相同,饱和度单调递增。它的主要维度是颜色亮度(lightness),一般情况下,较低的数值对应较亮的颜色,较高的数值对应较暗的颜色,这是因为可视化配图往往是在白色或浅色背景上绘制的,而在深色背景中,则会出现相反的情况,即更亮的颜色用更高的数值表示。单色系主题的次要维度是色调(hue),即较暖的颜色出现在较亮的一端,较冷的颜色则会出现在较暗的一端。例如,人口密度的变化就可以使用单色系颜色进行表示。

2. 双色渐变色系

双色渐变色系颜色主题主要用在有一个关键中心值(midpoint)的数值变量中,其本质是两个连续单色系的组合,把关键的中心值作为中间点,一般使用白色表示,大于中心值的分配给中间点一侧的颜色,而小于中心值的分配给中间点另一侧的颜色。此外,我们可以通过颜色的深浅进行判断,即中心值通常被指定为浅色,距中心点越远,颜色越深。 在这里插入图片描述

3. 多色系

当所表示的数据为类别型数值(类别变量)时,我们可以使用多色系颜色主题。在多色系颜色主题的使用过程中,需要给每个组分配不同的颜色。一般情况下,可尝试将颜色主题中的颜色类别设置为 10 种或更少,而使用过多的颜色类别,可能造成分组混乱,导致杂乱的视觉效果。当现有的颜色类别无法涉及全部数值时,可将某个数值类别叠加在一起,形成单个其他类别。 在这里插入图片描述

1.2.4 配色工具 1. Color Scheme Designer 网站中的高级在线配色器

主要以色环(色轮)的方式为使用者选择配色,包括单色搭配、互补色搭配、三角形搭配、矩形搭配、类 似色搭配和“类似色搭配互补色”6 种色环配色方案.、 在这里插入图片描述

该界面包含 4 个区域,介绍如下。

黄色框区域为色环配色选择区域,有 6 种色环配色方案可供使用者选择。红色框区域为色环显示区域,图 1-2-15 中的黑色箭头指向的是根据“三角形搭配”方案选择的颜色在色环中的位置。蓝色框区域为配色方案 ID(编号)。绿色框区域为色环配色方案的预览区域。 在这个高级在线配色器的左上角,选择一个配色方案,根据所选方案的不同,色环上会出现不同数量的圆点。单击或拖动色环上的圆点,右侧“配色预览”区域将即时呈现所选配色的预览图。 在选好色环配色方案后,我们可以通过“配色方案调节”选项(见图 1-2-16)进行颜色亮度和饱和度的调整,还可以进行配色对比度的调整;“色彩列表”区域展示该色环配色方案对应的所有 HEX 颜色码。 2. Adobe Color

dobe Color 的色轮配色工具界面包括以下 6 个模块。

黄色框区域包含常用的色轮配色方案,有类别色系、单色系、三角色系、互补色系、 正方形色系等。红色框区域为选择色轮配色方案后对应的色轮,拖动白色箭头 ( 红色箭头指示 ),可 以统一调整色相和饱和度。蓝色框区域为选定色轮配色方案对应的颜色,中间色块中的白色三角对应色轮中的白 色箭头。紫色框区域为色块对应的 HEX 颜色码。橙色框区域为可选的色彩模式,包括 RGB、HSB 和 LAB。绿色框区域为色彩模式对应的单个维度颜色值,如 R、G、B 值 在这里插入图片描述 3. ColorBrewer 2.0

ColorBrewer 2.0 的操作界面包括下列 8 个模块。 ① 表示可选的数据类别数。ColorBrewer 2.0 提供的数据类别数最多 12 个,我们建议将数 据类别数设置为 5 ~ 8 个。 ② 表示可选择的颜色主题。ColorBrewer 2.0 提供了单色系(sequential)、双色渐变色系 (diverging)和多色系(qualitative)3 种选项。 ③ 表示选定颜色主题后的配色方案。在单色系主题中,还涉及色调的选择,可供选择的 色调类型包括多色调(Multi-hue)和单色调(Single hue)。 ④ 表示配色方案输出时的注意事项,即用户是否需要考虑色盲情形(colorblind safe)、是 否友好打印(print friendly)等。 ⑤ 表示具体搭配色系的输出模式及对应的颜色码,可选择的格式包括 HEX、RGB 和 CMYK。 ⑥ 用于控制不同颜色搭配方案的一些属性,包括道路(roads)、城市(cities)和边界线 (borders),用户可以用不同的颜色表示它们。 ⑦ 表示背景设置区域。背景设置包括纯色(solid color)和地形(terrain)两个选项。用 户还可以设置背景颜色的透明度(color transparency)。 ⑧ 展示不同颜色搭配方案的预览效果。 在这里插入图片描述

1.3 实操 1.3.1 折线图绘制

在这里插入图片描述

import numpy as np import pandas as pd import seaborn as sns import proplot as pplt import openpyxl import matplotlib.pyplot as plt from proplot import rc rc["font.family"] = "Times New Roman" ## 设置字体 # 设置坐标轴轴、标签、标题字体大小 rc["axes.labelsize"] = 15 rc['tick.labelsize'] = 13 rc["suptitle.size"] = 15 plt.style.use('science','ieee') ## 设置期刊格式 data = pd.read_excel(r"基本构成示意绘图数据.xlsx") #proplot 方法绘制 fig = pplt.figure(figsize=(4.5,3.5)) ax = fig.subplot() ax.format(abc='(a.)', abcloc='ul',abcsize=20,xlabel='Time', ylabel='Values', xlim=(-2,40),ylim=(-8,30)) selsect = ["A","B","C","D"] colors = ["#2FBE8F","#459DFF","#FF5B9B","#FFCC37"] for index,color in zip(selsect,colors): data_selcet = data.loc[data['type']==index,:] ax.errorbar(x=data_selcet["time"],y=data_selcet["mean"],yerr=data_selcet["sd"],color="k", linewidth=1,marker='o',ms=10,mew=1,mec='k',mfc=color,capsize=5,label=index) ax.legend(ncols=4, frame=True,loc='t') #fig.save(r"\第1章 科研论文配图的绘制与配色基础\\图1-1-1 科研论文配图基本构成示意图.svg" plt.show() 1.3.2 直方图

在这里插入图片描述

menMeans = (5, 15, 30, 40) menStd = (2, 3, 4, 5) ind = np.arange(4) width= 0.7 labels = ('A', 'B', 'C', 'D' colors=["#1826B0","#4C59D8","#717BD8","#081272"] fig,ax = plt.subplots(figsize=(4,3),dpi=100,facecolor="w") for name,value,err,label,color in zip(labels,menMeans,menStd,labels,colors): ax.bar(name,value,yerr=err,label=label,color=color,ec="k",lw=.8, capsize=5,error_kw={'linewidth':1}) for spine in ["top","right"]: ax.spines[spine].set_visible(False) ax.grid(False) ax.set_ylim(0,50) ax.legend(frameon=False,handlelength=1.5,handleheight=1.5) plt.show() 1.3.3 饼图 sizes = [30, 70] labels = ['A','B'] colors=["#1826B0","#FFBA00"] fig,ax = plt.subplots(figsize=(4,3.5),dpi=100,facecolor="w") explode = (0, 0.,) ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90,colors=colors, wedgeprops={'linewidth':.8, 'edgecolor': 'k'}, textprops={'size': 12,"color":"w"}) ax.legend(labels,loc ='upper left',fontsize=9,handlelength=1.2,handleheight=1.2) plt.tight_layout() plt.show()

在这里插入图片描述

1.3.4 小提琴图 中位数(小提琴图上的一个白点)四分位数范围(小提琴中心的黑色条)。较低/较高的相邻值(黑色条形图)–分别定义为第一四分位数-1.5 IQR和第三四分位数+1.5 IQR。这些值可用于简单的离群值检测技术,即位于这些 "栅栏"之外的值可被视为离群值。 在这里插入图片描述

与箱形图相比,小提琴图毫无疑问的优势在于:除了显示上述的统计数据外,它还显示了数据的整体分布。这个差异点很有意义,特别是在处理多模态数据时,即有多峰值的分布。

# a)Matplotlib的默认颜色主题 matplotlib_colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'] fig,ax = plt.subplots(figsize=(3,3.2),dpi=100,facecolor="w") ax = sns.violinplot(x="day", y="total_bill", data=tips, palette=matplotlib_colors, saturation=1) for spine in ["top","right"]: ax.spines[spine].set_visible(False) ax.grid(False) ax.set_ylim(-10,60) ax.set_xlabel("Class") ax.set_ylabel("Value") plt.tight_layout() plt.show() # b)Seaborn的默认颜色主题 fig,ax = plt.subplots(figsize=(3,3.2),dpi=100,facecolor="w") ax = sns.violinplot(x="day", y="total_bill", data=tips,saturation=1) for spine in ["top","right"]: ax.spines[spine].set_visible(False) ax.grid(False) ax.set_ylim(-10,60) ax.set_xlabel("Class") ax.set_ylabel("Value") plt.tight_layout() plt.show() # c)SciencePlots的默认颜色主题(需安装Scienceplots包(pip install SciencePlots),不同版本引用方式有所不同,请注意!) with plt.style.context(['science']): from proplot import rc rc["xtick.minor.visible"] = False rc["ytick.minor.visible"] = False rc["xtick.major.pad"] =5 fig,ax = plt.subplots(figsize=(3,3.2),dpi=100,facecolor="w") ax = sns.violinplot(x="day", y="total_bill", data=tips,saturation=1) for spine in ["top","right"]: ax.spines[spine].set_visible(False) ax.tick_params(top=False,right=False) ax.grid(False) ax.set_ylim(-10,60) ax.set_xlabel("Class") ax.set_ylabel("Value") plt.tight_layout() plt.show()

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

1.3.5 散点图 # a)单色系可视化绘制示例 with plt.style.context(['science']): from proplot import rc rc["xtick.minor.visible"] = False rc["ytick.minor.visible"] = False rc["xtick.major.pad"] =5 fig,ax = plt.subplots(figsize=(3,3.2),dpi=100,facecolor="w") scatter = ax.scatter(x="total_bill",y="tip",c="tip",data=tips,ec="k", cmap="YlGnBu") for spine in ["top","right"]: ax.spines[spine].set_visible(False) ax.tick_params(top=False,right=False) cax = ax.inset_axes([0.1, .85, 0.6, 0.05], transform=ax.transAxes) colorbar = fig.colorbar(scatter, ax=scatter, cax=cax, orientation="horizontal") colorbar.ax.tick_params(bottom=True,direction="in",labelsize=8,pad=3) colorbar.ax.xaxis.set_ticks_position('top') colorbar.outline.set_linewidth(.4) ax.grid(False) ax.set_ylim(0,12) ax.set_xlabel("X Label") ax.set_ylabel("Y Label") plt.tight_layout() plt.show() # b)双色渐变色系可视化绘制示例 with plt.style.context(['science']): from proplot import rc rc["xtick.minor.visible"] = False rc["ytick.minor.visible"] = False rc["xtick.major.pad"] =5 fig,ax = plt.subplots(figsize=(3,3.2),dpi=100,facecolor="w") scatter = ax.scatter(x="total_bill",y="tip",c="tip",data=tips,ec="k", cmap="seismic") for spine in ["top","right"]: ax.spines[spine].set_visible(False) ax.tick_params(top=False,right=False) cax = ax.inset_axes([0.1, .85, 0.6, 0.05], transform=ax.transAxes) colorbar = fig.colorbar(scatter, ax=scatter, cax=cax, orientation="horizontal") colorbar.ax.tick_params(bottom=True,direction="in",labelsize=8,pad=3) colorbar.ax.xaxis.set_ticks_position('top') colorbar.outline.set_linewidth(.4) ax.grid(False) ax.set_ylim(0,12) ax.set_xlabel("X Label") ax.set_ylabel("Y Label") plt.tight_layout() plt.show() # c)多色系可视化绘制示例 with plt.style.context(['science']): from proplot import rc rc["xtick.minor.visible"] = False rc["ytick.minor.visible"] = False rc["xtick.major.pad"] =5 fig,ax = plt.subplots(figsize=(3,3.2),dpi=100,facecolor="w") scatter = ax.scatter(x="total_bill",y="tip",c="tip",data=tips,ec="k", cmap="Set1") for spine in ["top","right"]: ax.spines[spine].set_visible(False) ax.tick_params(top=False,right=False) cax = ax.inset_axes([0.1, .85, 0.6, 0.05], transform=ax.transAxes) colorbar = fig.colorbar(scatter, ax=scatter, cax=cax, orientation="horizontal") colorbar.ax.tick_params(bottom=True,direction="in",labelsize=8,pad=3) colorbar.ax.xaxis.set_ticks_position('top') colorbar.outline.set_linewidth(.4) ax.grid(False) ax.set_ylim(0,12) ax.set_xlabel("X Label") ax.set_ylabel("Y Label") plt.tight_layout() plt.show()

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3