欢迎光临散文网 会员登陆 & 注册

基于Python的科研论文配图绘制(二)

2023-08-22 16:32 作者:Traveler-小小音  | 我要投稿

Datawhale 8月 组队学习活动

参考书籍:《科研论文配图绘制指南—— 基于Python》,宁海涛著,人民邮电出版社

一、环境配置

上回说到,通过matplotlib库,我们可以实现用Python实现基础绘图。同样的,离不开环境的配置。关于个人的环境配置,依然是通过Anaconda创建独立环境,并选择了群友配置好的requirements.txt,再通过pip命令直接一步到位,非常感谢。

群友推荐环境:Python=3.8

所需库文件

二、初识Matplotlib

书中看到这个库的时候其实是有种莫名的熟悉感,后来查了一下我原来的几个环境,基本上都有它的出现,包括CV和NLP,可以说它的应用还是很广泛的。

yolov5(CV)环境里发现的库
  1. 图形元素

    (1)基础类元素:点、 线、文本、网格、标题、图例等

    (2)容器类元素:图形、坐标图形、轴和刻度

  2. 轴比例和刻度

    (1)轴比例:规定了数值与给定轴之间的映射方式,即数值在轴上以何种方式进行缩放。

    (2)刻度位置和刻度格式:规定了每个轴对象上刻度的位置与格式。

  3. 坐标系

    (1)直角坐标系:即笛卡儿坐标系,用代数公式表达几何 形状的正交坐标系统。

    (2)极坐标系:在平面内由极点、极轴和极径组成的坐标系统。可以与直角坐标系相互转换,满足x = r cos θ y = r sin θ。往往体现数据的周期性,即更好地展示数据的周期性变化。要求数据较为完整且有明显的周期性特征。

    (3)地理坐标系:可用地理投影有 Aitoff 投影、Hammer 投影、Lambert投影和 Mollweide 投影4种。

  4. 多字图绘制

    (1)subplot()函数:对当前画布对象添加单个子图,且每次添加子图都会 规定其位置顺序。

    (2)add_subplot()函数:相对于subplot() 函数,add_ subplot() 函数先产生 figure 对象。

    (3)subplots()函数:subplots(nrows, ncols, sharex, sharey)

    其中nrows表示绘制子图的行数;ncols表示绘制子图的列数,行数与列数的乘积即绘制的总子图数;sharex可以用来设定是否共享X轴;sharey可以用来设定是否共享Y轴。该函数会返回一个坐标数组对象,该对象用于每个子图的单独绘制。

    (4)axes()函数:为当前画布对象添加坐标图形对象, 使其成为当前的坐标图形对象。还包括对当前画布对象中的坐标图形对象添加颜色和大小映射等。

    (5)subplot2grid()函数:实现对不规则多子图的绘制,可以在当前画布对象上绘制网格。

    (6)gridspec.GridSpec()函数:gridspec.GridSpec(nrows, ncols, figure, left, bottom, right, top)

    函数用于指定放置子图的网格的几何形状。其中nrows表示网格中的行数;ncols表示网格中的列数;left、bottom、right和top是可选参数,用于将子图的范围定义为图形宽度或高度的一部分,设定网格在图形中的具体位置。

    (7)subplot_mosaic()函数:subplot_mosaic(mosaic,…)

    函数利用mosaic参数设置特定字符串符号进行子图的视觉布局。

  5. 图类型

    包括plot()(线图、点图、带连接 线的点图)、scatter()(散点图)、bar()/barh()(柱形图 / 条形图、堆积 柱形图 / 堆积条形图)、axhline()/ axvline()(垂直于 X/Y 轴的直线)、fill_between()(面积图、填充图)等。

三、代码实验

这张图展示了基于直坐标系绘制图的组成部分
这里我们就可以看到对图层颜色的赋值,遵循从下到上的顺序

以上作为展示图,提供的代码与生成图相互比对还是比较好看的,但是里面的大多数的函数内容是需要在第三章及以后才能进行初步了解。

下面我们以subplot()函数为例做一个表,用的仍是参考资料。

这是原图
一番修改后变成了这样

相信能明显看出来差异,这是因为我修改了一些参数,大致如下:

相信看过图再对比代码,基本上就明白的差不多了

其中“Arial”的原代码对应为“Times New Roman”,也就是字体设置

facecolor=“b”原代码是facecolor="w",也就是背景颜色,b=blue,w=white

其他的一目了然了,不再赘述

可以说,在有现成框架下的任务就是调参了,比较简单

但这门课重点还是在自定义编写代码绘制图像,当然这就需要后面的函数代码支撑了

(未完待续)

基于Python的科研论文配图绘制(二)的评论 (共 条)

分享到微博请遵守国家法律