Python 绘图
个人记录贴,持续更新中
python 可以绘制出非常精美的图形,其操作也是比较简单的,稍微了解一下就可以使用了,完全可以应付科研工作中的绘图需求。
安装
先介绍一下用到的几个库:
Numpy
Numpy 是 Python 的一个科学计算库,提供了大量的数学函数和矩阵运算等功能。在这里我们主要使用numpy来读取包含大量数据的数据文件。
Pandas
pandas 是一个强大的数据分析库,提供了大量的数据结构和数据处理工具,可以方便地处理数据文件。Pandas
根据我的习惯,主要用来读取包含少量数据的数据文件。提供了 DataFrame 数据结构,可以方便地处理数据。
Matplotlib
matplotlib 是一个 Python 2D 绘图库,可以生成各种格式的图形,包括线图、散点图、等高线图、柱状图、饼图等。
conda 安装这些库:
1 | conda install numpy pandas matplotlib |
pip 安装这些库:
1 | pip install numpy pandas matplotlib |
以绘制态密度图为例
先介绍一下这个例子要完成的事情,就是有4张态密度图,每张图有4个轨道的态密度,每个轨道有两个自旋态密度,所以一共有8个态密度曲线。这个例子的数据文件是由 vaspkit 115
功能处理得到的,具体格式如下:
1 | (default) migie:dos/ $ pwd [22:54:02] |
有4个数据文件,每个数据文件有5列,第一列是能量,后面4列是态密度。我们要绘制的单幅图是这样的:
在科研绘图中我们会有把单幅图绘制成多幅图的需求,我们可以将这些图合并到一张图里,像下面这样。
其实只要画一幅图,其他几幅都是一样的,只是数据文件不同而已。所以我们可以写一个函数,然后循环调用这个函数,就可以得到我们想要的图了。
首先直接上完整的代码,再每一行代码做解释,代码如下:
1 | # 倒入必要的库 |
上面的代码用于生成绘制一幅图,我们可以通过循环调用这个函数,生成我们想要的图。上面的代码保存为 dos.py
,下面我们创建一个 dos_merge.py
文件,用于调用 dos.py
文件,代码如下:
1 | import matplotlib.pyplot as plt |
运行 dos_merge.py
文件,就可以得到我们想要的图了。
个人学习matplotlib的感觉,其实整体代码没有很多复杂性就是用文字的形式设置一些图形的属性,比如坐标轴标签,图例,坐标轴范围等等,matplotlib的文档也是非常全面的,如果有不懂的地方,可以查看文档,或者上网搜索,基本上都能找到答案。再结合一点 python 基础就可以非常便捷的画出我们想要的各种图了。我基本没有使用过 Origin 之类的绘图软件,但是图形化的工具包装好了,交互方便了但是也复杂了,不如直接用代码来的简单灵活,而且代码可以保存下来,方便以后修改,循环调用,本例子的所有资料可以点击这里下载。