matplotlib是一款用于画图的软件,以下步骤建议在.ipynb
中完成。
你需要导入以下包:
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
matplotlib 在 Figure
上绘制图形,每一个Figure
会包含多个Axes
。使用matplotlib.pyplot.subplots
方法创建带有Axes
的Figure
;使用Axes.plot
在Axes
上画数据。
fig, ax = plt.subplots() # Create a figure containing a single axes.
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]); # Plot some data on the axes.
下图是Figure中的常用组件(components):
Figure可以理解成JS中的Canvas,我们所有的图形都要在Figure中绘制。创建Figure的常用方法有以下两种plt.figure()
和plt.subplots()
:
fig = plt.figure() # an empty figure with no Axes
fig, ax = plt.subplots() # a figure with a single Axes
fig, axs = plt.subplots(2, 2) # a figure with a 2x2 grid of Axes
Axes
是一个包含在Figure
中的Artist
,是一块用来绘制数据的区域,它通常包含2个Axis
对象或者3个Axis
对象,取决于图形3D与否。每个Axes都有一个标题set_title()
,x标签set_xlabel()
,y标签set_ylabel()
。Axes的使用体现了OOP思想。
Axis设置了缩放大小和限制,其中Axis由ticks(刻度,轴上的标志)和ticklabels(标志的字符串的内容)组成。tick的位置由locator决定,ticklabels的字符串由Formatter决定。
所有在Figure上可见的东西都是Artists:Figure,Axes,Axis,Text等。
matplotlib的绘图函数所接受的输入数据得是numpy.array,即都得是ndarray
类型的数据。
建议使用OOP思想来绘图,如下所示:
x = np.linspace(0, 2, 100) # Sample data.
# Note that even in the OO-style, we use `.pyplot.figure` to create the Figure.
fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained')
ax.plot(x, x, label='linear') # Plot some data on the axes.
ax.plot(x, x**2, label='quadratic') # Plot more data on the axes...
ax.plot(x, x**3, label='cubic') # ... and some more.
ax.set_xlabel('x label') # Add an x-label to the axes.
ax.set_ylabel('y label') # Add a y-label to the axes.
ax.set_title("Simple Plot") # Add a title to the axes.
ax.legend(); # Add a legend.