matplotlib

http://www.codingpy.com/article/a-quick-intro-to-matplotlib/

什么是 Matplotlib?

简单来说,Matplotlib 是 Python 的一个绘图库。它包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图,正弦曲线,甚至是三维图形。Python 科学计算社区经常使用它完成数据可视化的工作。

你可以在他们的网站上了解到更多 Matplotlib 背后的设计思想,但是我强烈建议你先浏览一下他们的图库,体会一下这个库的各种神奇功能。

画一个简单的图形

首先我们要画一条在 [0, 2pi] 上的正弦曲线。读者应该会注意到我们在这里使用了 Numpy 库,但是即便你没有使用过这个库也不用担心,在后面的文章中我们也会介绍到 Numpy 库。

import matplotlib.pyplot as plt
import numpy as np
View Code

以上这些就是我们将要用到的导入模块。在我的上一篇文章(以及另一篇文章)中都提到过 from x import * 是一种糟糕的导入方式。我们不想在程序里重复书写 matplotlib.pyplot 和 numpy,这种书写方式过于冗长,因此我们采用了上面的折中写法。

# 简单的绘图
x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x)) # 如果没有第一个参数 x,图形的 x 坐标默认为数组的索引
plt.show() # 显示图形

上面的代码将画出一个简单的正弦曲线。np.linspace(0, 2 * np.pi, 50) 这段代码将会生成一个包含 50 个元素的数组,这 50 个元素均匀的分布在 [0, 2pi] 的区间上。

plot 命令以一种简洁优雅的方式创建了图形。提醒一下,如果没有第一个参数 x,图形的 x 轴坐标将不再是 0 到 2pi,而应该是数组的索引范围。

最后一行代码 `plt.show() 将图形显示出来,如果没有这行代码图像就不会显示。

运行代码后应该会类似得到下面的图形:

 

 

 

 

 

 

 

 

 

 

在一张图上绘制两个数据集

大多数时候读者可能更想在一张图上绘制多个数据集。用 Matplotlib 也可以轻松实现这一点。

x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x),
        x, np.sin(2 * x))
plt.show()

上面的代码同时绘制了表示函数 sin(x) 和 sin(2x) 的图形。这段代码和前面绘制一个数据集的代码几乎完全相同,只有一点例外,这段代码在调用 plt.plot() 的时候多传入了一个数据集,并用逗号与第一个数据集分隔开。

最后你会得到类似于下面包含两条曲线的图形:

自定义图形的外观

当在同一个图形上展示多个数据集时,通过改变线条的外观来区分不同的数据集变得非常必要。

# 自定义曲线的外观
x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x), 'r-o',
        x, np.cos(x), 'g--')
plt.show()

上述代码展示了两种不同的曲线样式:'r-o' 和 'g--'。字母 'r' 和 'g' 代表线条的颜色,后面的符号代表线和点标记的类型。例如 '-o' 代表包含实心点标记的实线,'--' 代表虚线。其他的参数需要读者自己去尝试,这也是学习 Matplotlib 最好的方式。

颜色: 蓝色 - 'b' 绿色 - 'g' 红色 - 'r' 青色 - 'c' 品红 - 'm' 黄色 - 'y' 黑色 - 'k''b'代表蓝色,所以这里用黑色的最后一个字母) 白色 - 'w' 线: 直线 - '-' 虚线 - '--' 点线 - ':' 点划线 - '-.' 常用点标记 点 - '.' 像素 - ',' 圆 - 'o' 方形 - 's' 三角形 - '^' 更多点标记样式点击这里

最后你会得到类似下面的图形:

 

posted on 2016-12-15 00:27  skywalkerfei  阅读(102)  评论(0)    收藏  举报

导航