Matplotlib 速学手册
Matplotlib
如果在jupyter notebook上写代码,要加上%matplotlib inline
这个魔法开关,否则只会将图像当作对象保存,而不显示图像。加上%matplotlib inline
之后,就可以将图像呈现出来。
1 Matplotlib plot 函数图
以 y = x 3 + 1 y=x^3+1 y=x3+1 为例子,绘制函数图像,如下:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1, 1, 100) # 在区间[-1, 1]中,生成步长相同的100个点。也可以用x = np.arange(101)生成100个整数点。
y = x ** 3 + 1 # 将点带入函数。
plt.plot(x, y) # plot()函数根据点生成连续函数。参数接受x值与y值两个数组。
plt.savefig("D:/三次函数.png") # savefig()函数保存图像。要在show()函数之前,否则容易导致保存图片为空白。
plt.show() # show()函数显示图像。
输出图像如下:
在Matplotlib中,plot()
函数根据点,描绘出连续函数图像。plot()
函数中,还可以接受描述函数图像的参数:color=' '
函数线的颜色,linewidth=' '
函数线的宽度,linestyle=' '
函数线的形式。
以 y = x 3 + 1 y = x^3+1 y=x3+1与 y = e x y = e^x y=ex为例,如下:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1, 1, 100) # 在区间[-1, 1]中,平均生成100个点。
y1 = x**3 + 1 # 定义三次函数。
y2 = np.e**x # 定义e ** x 函数
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.plot(x, y2, color='blue', linewidth=1.0, linestyle='-')
plt.savefig("D:/函数样式图.png") # savefig()保存图像
plt.show() # show()函数显示图像。
输出图像如下:
2 背景网格线
使用plt.grid(True)
函数为图添加网格线,参数默认值为Ture,可省略不写。
import matplotlib.pyplot as plt
import numpy as np
# plt模块中有一个grid函数,其中默认值为True
x = np.arange(-np.pi, np.pi, 0.01)
plt.plot(x, np.sin(x), x, np.cos(x)) # 参数数值个数为偶数时,则为成对(x, y);
plt.grid() # 添加网格背景
plt.show()
3 Matplotlib 幕布设置
Matplotlib中,figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
函数用来规划作图的背景参数。包括制图区域背景的大小,颜色,范围等。
num
:图像编号或名称,数字为编号 ,字符串为名称。
figsize
:指定figure的宽和高,单位为英寸;1英寸等于2.5cm,A4纸是 21*30cm的纸张 。如:figsize=(4, 3)。
dpi
:参数指定绘图对象的分辨率,即每英寸多少个像素。默认值为80。
facecolor
:背景颜色,查图普。范围是’#000000’~’#FFFFFF’。
edgecolor
:边框颜色。
frameon
:是否显示边框。
可用figure()
函数,将图像分别成像在单独的区域中,例如:
import numpy as np
import matplotlib.pyplot as plt
# 创建一个大幕布,在幕布上作图,更容易操作
plt.figure(figsize=(15, 4), facecolor='pink')
x = np.arange(-2*np.pi, 2*np.pi, 0.1)
# 创建一个子视图,将幕布分成2行3列,此图像占第1个位置.
axes1 = plt.subplot(2, 3, 1)
axes1.plot(x, np.sin(x))
# 幕布按2行3列分,图像占第4个位置.
axes2 = plt.subplot(2, 3, 4)
axes2.plot(x, np.cos(x))
# 幕布按1行3列分,图像占第2个位置.
axes3 = plt.subplot(1, 3, 2)
axes3.plot(x, np.sin(x))
# 幕布按1行3列分,图像占第3个位置
axes4 = plt.subplot(1, 3, 3)
axes4.plot(x, np.sin(x))
plt.show()
图像输出如下:
4 Matplotlib subplot区域划分
在Matplotlib中,subplot(numbRow,numbCol,plotNum)函数表示将图像放在什么位置。参数依次为第几行,第几列,第几个。其中参数之间的逗号可以省略不写。 一个简单的例子,具体如下:
import matplotlib.pyplot as plt
import numpy as np
plt.figure() # 创建表格绘制区域。
plt.subplot(2, 2, 1) # 划分表格绘制区域为2行2列,此图像站在第1个位置。
plt.plot([0, 1], [0, 1]) # 传递对应的x与y值。
plt.subplot(2, 2, 2) # 划分表格绘制区域为2行2列,此图像站在第2个位置。
plt.plot([0, 1], [0, 1]) # 传递对应的x与y值。
plt.subplot(223) # 同上不加逗号依然可以识别。
plt.plot([0, 1], [0, 1])
plt.subplot(224)
plt.plot([0, 1], [0, 1])
plt.figure() # 再创建一个表格绘制区域。
plt.subplot(2, 1, 1) # 划分表格绘制区域为2行1列,此图像站在第1个位置。
plt.plot([0, 1], [0, 1])
plt.subplot(2, 3, 4) # 划分表格绘制区域为2行3列,此图像站在第4个位置。
plt.plot([0, 1],