论文结果图:matplotlib和seaborn实现
在论文中,可视化结果往往很重要,毕竟文字太抽象,需要图片向审稿人直观的展现出我们的结果。我也写了俩篇论文和一篇专利的申请,其中也有一些画图的程序,因此记录,防止以后忘了。由于篇幅原因,文章就不贴代码,本文中所有的程序代码都在我的github。
画图程序往往有很多版,毕竟论文写完了,导师会先看你图画的怎么样,你觉得画的挺好的,导师觉得不行,那你就得回去重新画结果图,这中间的程序会修改成很多版本,我会从最终版和中间被抛弃的一些版本看看结果可视化。先看最终版,如果你对后面抛弃的其他版本也感兴趣的话,也可以往下看,最后会看看专利中画的图。
最终版
最终版论文中,需要画图的有
- 具有明显特征的天文数据,因为我是天文数据处理方向,所以会有天文数据的光谱图。
- 论文中算法的分析,因为算法会将数据按照信噪比分开,因此对每堆数据都要分析,之后还要分析整体的性能。
- 与其他算法的对比,分别是从召回、精确和时间来分析的
天文数据
第一,画具有明显特征的天文数据,天文数据是高维,一般的都会有三千多维,一种就是算法中使用了很多发射线,需要画出全部的三千多维,这种会要求标出数据中的发射线信息,写法在文件drawSpectralChinesePaper.py中,画出的如图1所示。
还有一种就是只需要部分发射线,因此并不需要在一张图中画出所有的发射线,只需要选取一些具有明显特征的波长段画出来,如果选取的特征相隔很远,我们就需要使用子图来画,写法在文件drawSpectralEnglishPaper.py,画出的如图2所示。
算法性能分析
第二,就是算法性能分析程序,分析一般都是分析算法中参数的变化,算法的精确率和召回率,我分为部分数据的召回和精确,还有就是整体数据的召回和精确。先来看算法中权重的改变,画出的图3如下所示,权重有俩种,一种是绿色的实线,一种是紫色的虚线,区分也较为明显,这种色调较为明快,写法在文件drawAlgorithmWeight.py。
再看部分数据的召回和整体,色调较暗,并且也需要良好的辨识度,横纵坐标都需要标识清楚,并且字体要清晰可见,召回率图写法在文件picAllRecall.py,召回率画出的如图4所示。
精确率图在文件picAllPrecision.py,精确率画出的如图5所示
还有一种就是算法中在多个数据集中的精确率可视化,如图6所示,虚线代表该数据集中全部数据的精确率,绿色、蓝色和橙色柱形代表数据集中部分数据的精确率,代码在文件drawPrecisionInFiveDataEnglishPaper.py。
对比算法分析
第三,就是对比实现分析,一般论文这里都非常重要,体现出论文算法的优势,我分析的一般只是召回率、精确率和时间,下面我们先分析精确率和召回率,之后再来看时间。精确率和召回率如果可以放在一起的话,那么就可以放在一起来展示,如下图7所示,一共对比了六种算法,论文算法WEDA要加粗表示,令别人一眼就看出论文算法的性能位置,图中还有虚线和实线来表示召回和精确,图中因为没有位置了,所以只能在论文中对图中的实线和虚线进行说明,代码在文件comparedPrecisionAndRecallEnglishPaper.py。
如果你对比的太多了,精确率和召回率放在一张图的话,就会显得很乱,让人看不清,那么就需要重新写一个来画图,还有就是如果期刊要求图中不能出现彩色来区别类别的话,就需要其他的方式来区分,如图8所示,论文算法是FDCC,能让人清晰的看到,并且每种算法都能被区分开,用的就是不同的柱形,代码在文件comparedRecallChinesePaper.py。
下面就是对比时间,我们依然会有俩种画法,一种就是彩色区分,还有一种就是形状区分,其实和上面的颜色都是一样,第一种就是彩色,如图9所示,代码就是文件comparedTimeEnglishColo.py。
还有一种就是形状区分,自己在画图的时候需要注意,该如何有效并且清晰的区分出所有的算法,如图10所示,图中采用的就是虚线和实线,代码就是文件comparedTimeChinesePaper.py。
被抛弃的版本
抛弃的版本,我们依旧从上面的三个角度来说
天文数据
第一,画有特征的天文数据,如图11所示,这在图中有一个小框,来表示另一条比较偏远的发射线,但是这样做的画,很容易让人误解它是图中哪段数据的放大,因此后来被抛弃不用了,代码在文件abandonDrawSpectral.py。
算法性能分析
第二,算法性能分析,主要就是算法中的参数、召回和精确,并且召回和精确是分整体和部分的。先来看参数,分析其性能和参数的联系,其中也有后来被抛弃不分析的参数,就是fitness的大小,如图12所示,我一直觉得这图很清晰简洁,很喜欢这图的颜色分布。代码在文件abandonFitnessAlgorithm.py。
再来看部分数据的精确率,这个分好多版本,我们来看俩个版本的,先看图13,首先这张图是有底纹的,后来觉得不好看,就把底纹去了,并且这是折线图,但是图中的点太多了,密密麻麻的,不美观,并且图示例也比较大,影响整体的观感,后来就被抛弃了,代码在文件abandonRecall.py。
后来就改了上面的缺点,变成了图14,这张图个人感觉没啥缺点,不要看其中表示的数据变了,那个没关系,主要看图,给人的感官,个人感觉挺好,可能就是颜色搭配不好,应该使用暗色调更好一点,后来就被抛弃了。代码在文件middleAbandonPicAllRecall.py。
整体数据的精确率和召回率,如图15,这张图如今看来也是很不好看的,缺点很多,线条画的不美观,点过多,数据放的太多,让人看不清自己想要看的,显得很杂乱,这样的画,得分开画最好,代码在文件abandonAllPrecisionAndRecall.py
后来分开,但是还是要看一下整体得精确率是如何变化,分析一下算法在数量多少的时候会达到稳定的状态,就有了下面图16,但是这张图过于单调简单,反应不出什么信息内容,放在论文中,会让别人认为你在凑篇幅,就抛弃了,代码在文件abandonAllPrecision.py。
对比算法分析
我的对比算法都喜欢放在一张图中来看,先来看对比精确率和召回率,个人感觉图17最大的缺点就是不突出自己的算法,这样无法让别人无法一眼就看出论文算法性能如何,所以后来就抛弃了,代码在文件middleAbandonComparedPreRecallEnglishPaper.py。
图18这是另外一篇中文论文中的,展示对比算法的精确率,但是这张图总感觉很单调,缺少一种紧凑感,代码在文件abandonPreciChinesePaper.py。
后来为了添加信息,就放入了全部信息,画出了图19,不过感觉这张图对比不出来,可能最主要的就是因为这是一张折线图,后来就改成了柱状图了,代码在文件abandonComparedPrecisionAndRecallChinesePaper.py。
最后就是对比算法的时间,个人感觉图20画的其实还行,我本以为不用常规柱状图就不那么单调,所以就把柱状横过来了,后来被改了,论文中的图片还是严肃一点好,代码在文件abandonComparedTimeEnglishColo.py。
中文论文中时间的对比,先是直接用的英文论文中的图片程序,画出来的就是图21,但是期刊要求的是图片都是黑白的,不能是色彩图片,因此后来就被抛弃,代码在文件abandonComparedTimeChineseColo.py。
最终改成了黑白的,变成了图22,但是后来还是被打回来了,对比算法应该是对比各算法,突出的就是算法之间的变化,应该将横坐标变成数据,然后算法在一起比较,所以被抛弃了,代码在文件abandonComparedTimeChinesePaper.py。
专利图片
专利中的图片都是黑白色,有很多图片都是直接使用论文中的程序画出来就行了,基本都是变色和将算法区分开使用到的线条形状就行了。我们先来看部分数据的精确率和召回率,俩张图都是一样的程序,因此这里只贴出精确率的图片,图23来看,就是黑白色,并且变化线条形状,代码在文件PatentComparisonAlgorithmPrec.py。
后面的对比算法中全部精确率和召回率也是如此,如图24,当然专利中的算法依旧要突出,代码在文件PatentComparisonAlgorithmPrecAndRecall.py。
再看对比算法的时间,个人感觉图25还是很好看的,也很清晰的对比出各算法的时间,并且各柱形都有明显的区别,代码在文件PatentComparisonAlgorithmTime.py。
在画时间的时候,其实还有一张被抛弃的图片,就是图26,这张图也挺好看的,色彩比较淡,但是整体感观很高,就是它不是黑白的,因此不能放入其中,代码在文件abandonPatentComparisionAlgorithmChinese.py。
总结
结果可视化感觉还挺重要,毕竟文字的抽象,只有图片才能让人一眼就直观的看出你想要表达的东西,在论文中,我一般都是使用matplotlib和seaborn实现的,后期就不用seaborn,因为它感觉无法定制自己想要的图片,还是matplotlin大法才是最好的,可以随心所欲的画出自己想要的结果图片。本文中所有的程序代码都在我的github。
论文结果图:matplotlib和seaborn实现的更多相关文章
- Python数据可视化matplotlib和seaborn
Python在数据科学中的地位,不仅仅是因为numpy, scipy, pandas, scikit-learn这些高效易用.接口统一的科学计算包,其强大的数据可视化工具也是重要组成部分.在Pytho ...
- 机器学习——可视化绘图matplotlib和seaborn
安装matplotlib和seaborn https://blog.csdn.net/Jia_jinjin/article/details/80428598 seaborn pairplot:特征两两 ...
- matplotlib 与 seaborn 中出现中文乱码的解决方法
Linux.Mac osx 系统中,出现 matplotlib 或 seaborn 绘图中有中文乱码的情形,可以考虑使用以下方式处理: 到 anaconda 的 matplotlib 中查看是否有 ...
- 数据可视化matplotlib、seaborn、pydotplus
如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10486560.html 一.数据可视化 data.mat 链接:https://p ...
- Matplotlib和Seaborn演示Python可视化
数据可视化:就是使用图形图表等方式来呈现数据,图形图表能够高效清晰地表达数据包含的信息. Seaborn是基于matplotlib,在matplotlib的基础上进行了更高级的API封装,便于用户可以 ...
- word论文之图和表目录制作
https://jingyan.baidu.com/article/91f5db1b3c539f1c7e05e341.html?qq-pf-to=pcqq.c2c 1.目标: (1)图目录. (2)表 ...
- python-绘图matplotlib
<Python编程:从入门到实践>读书笔记 1.使用plot()绘制简单的折线图 import matplotlib.pyplot as plt va=[1,2,3,4,5] sq=[1, ...
- Python笔记12-----画图Matplotlib
1.matplotlib:pyplot和pylab 如: import pylab as pl pl.figure(figsize=(8,6),dpi=100)[建立的图像大小和图的精度] pl.pl ...
- [复现论文程序图]High Speed Continuous Variable Source-Independent Quantum Random Number Generation
这次的任务是复现该文章的图2(C),过程如下. ①翻译了整篇文章,断断续续,花了3-4天时间. ②阅读文章,并且记录下每个符号的意义,记在单独的1个word文档里. ③开始编程,用的matlab201 ...
随机推荐
- 数据可视化之DAX篇(十三)熟练使用FORMAT函数,轻松自定义数据格式
https://zhuanlan.zhihu.com/p/64420449 在进行数据分析时,需要对某个数据进行格式调整的情形经常会遇到,在DAX中有一个专门进行格式调整的函数:FORMAT. 其实对 ...
- 爬虫01 /jupyter、爬虫概述、requests基本使用
爬虫02 /jupyter.爬虫概述.requests基本使用 目录 爬虫02 /jupyter.爬虫概述.requests基本使用 1. jupyter的基本使用 2. 爬虫概述 3. reques ...
- matplot笔记
文件读取: data_train = pd.read_table('G:\python\PYproject\Titanic/train_20171215.txt',header=None,encodi ...
- antd踩坑:日期选择器的可选日期控制的问题
有一个需求是日期选择需要加一个日期限制. 于是我兴高采烈的加上去了. // 日期可选判断方法 disabledDateFunc = current => { const { disabledDa ...
- 利用华为eNSP模拟器实现vlan之间的通信
eNSP交换机配置VLAN 1. 搭建网络拓扑结构 运行eNSP>新建拓扑>搭建如下图的拓扑结构>启动设备.利用调色板将划分的vlan进行区分. 2. pc机IP地址配置 pc1的I ...
- abp vnext 开发快速入门 4 跨域设置
由于项目采用的微服务框架,前端与后端交互难免有跨域的问题.abp vnext实现跨域也很简单,只需要设置几处就可以了,这里只讲全局的跨域,至于局部的Action如何跨域请自行搜索.netcore 跨域 ...
- 题解 洛谷 P5163 【WD与地图】
首先将操作倒序,把删边转化为加边.先考虑若边是无向边,条件为连通,要怎么处理. 可以用并查集来维护连通性,对每个连通块维护一颗权值线段树,连通块的合并用线段树合并来实现,线段树同时也支持了修改点权. ...
- vue的自定义指令。directive
在vue中有很多vue自带的指令,比如v-heml.v-for.v-if,v-on.v-bind.v-else.v-show. 但是这些指令还不够我们使用的.就有了directive这个对象. 这个使 ...
- springboot(三)SpringDataJPA完成CRUD
参考博客—恒宇少年:https://www.jianshu.com/p/b6932740f3c0 纯洁的微笑:http://www.ityouknow.com/springboot/2016/08/2 ...
- 第三节:Centos下安装Mysql5.6数据库
1.下载mysql5.6版本 [官网-需要什么版本自己去找]https://dev.mysql.com/downloads/mysql/5.6.html [版本]linux通用 cd /usr/loc ...