如何在 Linux 上使用 matplotlib 进行科学绘图
如果您想要一个高效、自动化的解决方案来在 Linux 中生成高质量的科学绘图,那么请考虑使用 matplotlib。 Matplotlib 是一个基于 Python 的开源科学绘图包,其许可证基于 Python Software Foundation 许可证。丰富的文档和示例、与 Python 和 NumPy 科学计算包的集成以及自动化功能只是该包成为 Linux 环境中科学绘图的可靠选择的几个原因。本教程将提供几个使用 matplotlib 创建的示例图。
特征
多种绘图类型(条形图、箱形图、等高线图、直方图、散点图、线图...)
基于Python的语法
与 NumPy 科学计算包集成
源数据可以是 Python 列表、Python 元组或 NumPy 数组
可定制的绘图格式(轴刻度、刻度位置、刻度标签...)
可定制的文本(字体、大小、位置...)
TeX 格式(方程、符号、希腊字符...)
与 IPython 兼容(允许从 Python shell 进行交互式绘图)
自动化 - 使用 Python 循环迭代创建绘图
将绘图保存到图像文件(png、pdf、ps、eps 和 svg 格式)
matplotlib 基于 Python 的语法是其许多功能的基础,并支持高效的工作流程。有许多科学绘图包可以生成高质量的绘图,但它们是否允许您直接在 Python 代码中完成此操作?最重要的是,它们是否允许您创建自动化例程来迭代创建可以保存为图像文件的绘图? Matplotlib 允许您完成所有这些任务。您现在可以节省原本手动创建多个绘图的时间。
matplotlib的安装
安装Python和NumPy包是使用matplotlib的先决条件。可以在此处找到安装 NumPy 的说明。
要在 Debian 或 Ubuntu 中安装 matplotlib,请运行以下命令:
$ sudo apt-get install python-matplotlib
要在 Fedora 或 CentOS/RHEL 中安装 matplotlib,请运行以下命令:
$ sudo yum install python-matplotlib
Matplotlib 示例
本教程将提供几个绘图示例来演示如何使用 matplotlib:
散点图和线图
直方图
饼形图
在这些示例中,我们将使用 Python 脚本来执行 matplotlib 命令。请注意,必须通过 import
命令从脚本中导入 numpy 和 matplotlib 模块。 np
指定为对 numpy
模块的引用,plt
指定为对 matplotlib.pyplot
命名空间的引用:
import numpy as np
import matplotlib.pyplot as plt
示例 1:散点图和线图
第一个脚本 script1.py
完成以下任务:
创建三个数据集(
xData
、yData1
和yData2
)创建一个宽度和高度分别为 8 英寸和 6 英寸的新图形(指定数字 1)
设置绘图标题、x 轴标签和 y 轴标签(字体大小均为 14)
将第一个数据集
yData1
作为xData
数据集的函数绘制为带有圆形标记和“y1 data”标签的蓝色虚线将第二个数据集
yData2
作为xData
数据集的函数绘制为不带标记且标签为“y2 data”的红色实线。将图例放置在图的左上角
将图另存为 PNG 文件
script1.py 的内容:
import numpy as np
import matplotlib.pyplot as plt
xData = np.arange(0, 10, 1)
yData1 = xData.__pow__(2.0)
yData2 = np.arange(15, 61, 5)
plt.figure(num=1, figsize=(8, 6))
plt.title('Plot 1', size=14)
plt.xlabel('x-axis', size=14)
plt.ylabel('y-axis', size=14)
plt.plot(xData, yData1, color='b', linestyle='--', marker='o', label='y1 data')
plt.plot(xData, yData2, color='r', linestyle='-', label='y2 data')
plt.legend(loc='upper left')
plt.savefig('images/plot1.png', format='png')
结果图如下所示:

示例 2:直方图
第二个脚本 script2.py
完成以下任务:
创建包含 1000 个正态分布随机样本的数据集
创建一个宽度和高度分别为 8 英寸和 6 英寸的新图形(指定数字 1)
设置绘图标题、x 轴标签和 y 轴标签(字体大小均为 14)
将数据集
samples
绘制为包含 40 个 bin、上限和下限分别为 -10 和 10 的直方图将文本添加到绘图中并使用 TeX 格式显示希腊字母
mu
和sigma
(字体大小为 16)将图另存为 PNG 文件
script2.py 的内容:
import numpy as np
import matplotlib.pyplot as plt
mu = 0.0
sigma = 2.0
samples = np.random.normal(loc=mu, scale=sigma, size=1000)
plt.figure(num=1, figsize=(8, 6))
plt.title('Plot 2', size=14)
plt.xlabel('value', size=14)
plt.ylabel('counts', size=14)
plt.hist(samples, bins=40, range=(-10, 10))
plt.text(-9, 100, r'$mu$ = 0.0, $sigma$ = 2.0', size=16)
plt.savefig('images/plot2.png', format='png')
结果图如下所示:

示例 3:饼图
第三个脚本 script3.py
完成以下任务:
创建包含五个整数的数据集
创建一个宽度和高度分别为 6 英寸和 6 英寸的新图形(指定数字 1)
向图形添加纵横比为 1 的轴
设置绘图标题(字体大小为 14)
将数据集
data
绘制为包含标签的饼图将图另存为 PNG 文件
script3.py 的内容:
import numpy as np
import matplotlib.pyplot as plt
data = [33, 25, 20, 12, 10]
plt.figure(num=1, figsize=(6, 6))
plt.axes(aspect=1)
plt.title('Plot 3', size=14)
plt.pie(data, labels=('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'))
plt.savefig('images/plot3.png', format='png')
结果图如下所示:

概括
本教程提供了几个可以使用 matplotlib 科学绘图包创建的绘图示例。 Matplotlib 是 Linux 环境中科学绘图的绝佳解决方案,因为它与 Python 和 NumPy 自然集成,具有自动化能力,并且可以生成各种可定制的高质量绘图。 matplotlib 包的文档和示例可以在官方网站上找到。