万物科技 学,以致用

科学计算7 - Matplotlib

2018-02-15
Geng

Matplotlib可能会是你从Matlab转向Python进行科学计算的决定因素,因为它与Jupyter结合真的是太好用了。它不仅带给你快速可视化数据的方法,还提供高质量的图表。

为了使用Matplotlib,在Jupyter笔记本所有代码之前,加一句%matplotlib inline,就可以开始使用了。

开始使用

Matplotlib的方法很像Matlab的画图方法,通过下面一行代码引入模块:

from matplotlib import pyplot as plt

有时候你可能还会看到有人用from pylab import *,这是Matplotlib另一个接口,但是官方已经不推荐使用了

用例子说话

首先画几个简单的图,有一个直观的感觉。

所有工作之前,先引入需要的库

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

划线

x = np.linspace(0,10,100)
y = np.exp(-x)
plt.plot(x, y)
plt.show()

直方图

x = np.random.normal(size=20000)
plt.hist(x, bins=100)
plt.show()

散点图

x = np.random.rand(100)
y = np.random.rand(100)
plt.scatter(x, y)
plt.show()

画图设置

基本设置

首先我们画一个正弦和余弦的图

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

plt.plot(X, C)
plt.plot(X, S)

plt.show()

我们可以看到,上图已经有了很多设置,比如线型,颜色等,说明默认设置已经帮我们做了许多工作,那么这些默认设置怎么做的呢?我们将这些默认设置显式的写出来看下(颜色可能不够准确,不要太讲究哈)。

# 图片大小8x6英寸, 80 dpi(dots per inch)
plt.figure(figsize=(6, 4), dpi=80)

# 建立一个新的subplot,一行一列展示,以下是第一个其中的第一个图(这里是唯一的一个)
plt.subplot(1, 1, 1)

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

# 蓝色cosine连续线型,线宽为1
plt.plot(X, C, color="blue", linewidth=1.0, linestyle="-")

# 橙色sine连续线型,线宽为1
plt.plot(X, S, color="orange", linewidth=1.0, linestyle="-")

# x轴范围
plt.xlim(-3.5, 3.5)

# x轴刻度线
plt.xticks(np.linspace(-3, 3, 7, endpoint=True))

# y轴范围
plt.ylim(-1.1, 1.1)

# y轴刻度线
plt.yticks(np.linspace(-1, 1, 9, endpoint=True))

# 也可以保存图片为72dpi
# plt.savefig("exercice_2.png", dpi=72)

# 展示图片
plt.show()

上面说有设置自己修改,可以观察变化,学习怎样设置

如果想要增加图例的话,可以如下操作:

plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plt.plot(X, S, color="red",  linewidth=2.5, linestyle="-", label="sine")

plt.legend(loc='upper left')
plt.show()

Figures和Subplots

Matplotlib中,figure是整个画布,在这个画布中有subplot。 subplot位置可以见下图:

可以发现,前两个参数是画布大小(n * m个图),最后一个参数是具体位置。

更多方法请见文档


Comments

你可以请我喝喝茶,聊聊天,鼓励我

Wechat Pay
wechat

Thanks!