Matplotlib Figure和Axes
Matplotlib是Python中用于绘制基于数据的图形的一个库,它提供了丰富的绘图功能。Matplotlib最主要的特点就是兼容Numpy,因此可以简单的通过Numpy数组作为输入来绘制各种各样的图形。
Matplotlib分为三层,即pyplots层、artists层和backend层。pyplots层提供了一个和MATLAB兼容的界面,方便用户进行绘图。artists层提供了更高级别的图形对象,如坐标轴、文本、曲线等。backend层是底层的图形生成系统,Matplotlib可以轻而易举的切换backend。
在Matplotlib绘图中,Figure和Axes是两个最常用的类。下面将详细介绍Figure和Axes的含义、用法及其相关方法。
阅读更多:Matplotlib 教程
Figure
Figure是Matplotlib下最上层的图像容器,它包含了Axes、Legend等对像,而Axes则包含了大部分的绘图元素。因此,我们可以把Figure看成是一个大的画布,上面可以绘制多个小图形,而这些小图形就是Axes。
在Matplotlib中,每个Figure都是一个完整的窗口或页面,Figure对象用于管理绘图窗口上的所有元素。一个 Figure 对象包含的所有的图标都是在同一个窗口中展现的。
在Matplotlib中,可以通过以下方法创建Figure对象:
import matplotlib.pyplot as plt
fig = plt.figure()
在这个例子中,fig = plt.figure()
创建了一个空的Figure对象,同时会调用默认的参数。如果需要指定Figure的大小、分辨率、背景色或调整它的边距,我们可以通过以下方法进行设置:
import matplotlib.pyplot as plt
# 可选参数如下:figsize:大小,dpi:分辨率,facecolor:背景色,edgecolor:边框颜色
fig = plt.figure(figsize=(8,6), dpi=100, facecolor='lightgray', edgecolor='black')
这段代码会创建一个大小为8*6的灰色背景的Figure对象,分辨率为100dpi。
Axes
Axes是Matplotlib下面的重要类之一,它可以被看做是一个带有数据限制的一维或多维坐标系。在图中绘图时,常常需要绘制多个Axes,使得坐标系产生分布效果,从而达到比单一 Axes 更好的数据展示效果。
Axes是一个具有窗口(Window)属性和数据属性(Data)的图像区域,数据属性确定了坐标轴上显示的内容,而窗口属性则决定了坐标轴的显示位置。每一个Axes都有一个X轴和Y轴。通过设置X轴和Y轴的范围,可以控制数据呈现的范围。
在Matplotlib中,可以通过以下方法创建Axes对象:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
这段代码创建了一个Figure对象,并在其上添加了一个Axes对象。如果需要指定Axes的位置、大小、边距等参数,我们可以通过以下方法进行设置:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 6), dpi=100, facecolor='lightgray', edgecolor='black',
subplot_kw=dict(projection='polar'), gridspec_kw=dict(hspace=0.4, wspace=0.4))
此处给出一个例子,这里的Axes使用了更高级别的polar投影,通过gridspec_kw参数可以进行子图的排列,hspace和wspace参数控制子图之间的高度和宽度间隔。
Figure和Axes的方法
通过Figure和Axes对象的方法,我们可以控制图形的样式、布局、标签、绘图样式等。下面将介绍常用的Figure和Axes的方法。
Figure的方法
add_subplot()
add_subplot()方法可以添加Axes对象到Figure中。该方法接受三个整数参数,分别表示图表的行数、列数和子图的编号,可以把图表分成多个子图,方便展示复杂的数据。
以下是一个示例代码:
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1) # 第一个子图
ax2 = fig.add_subplot(2, 2, 2) # 第二个子图
ax3 = fig.add_subplot(2, 2, 3) # 第三个子图
ax4 = fig.add_subplot(2, 2, 4) # 第四个子图
该代码将Figure对象分成2行2列的4个子图,每个子图使用不同编号表示。
suptitle()
suptitle()方法可以在Figure对象上添加中央标题,用于概括整个图表的内容。以下是一个示例代码:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6,6))
fig.suptitle("Example of Suptitle", fontsize=14, fontweight='bold')
此代码创建了一个Figure对象并设置了中央标题。
savefig()
savefig()方法可以将Figure对象保存为图像文件。该方法接受一个文件名和一些可选参数,包括格式、分辨率、大小等。以下是一个示例代码:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot([1, 2, 3], [4, 5, 6])
fig.savefig('example.png', dpi=300, bbox_inches='tight')
该代码将一个简单的线图保存为名为’example.png’的图像文件,分辨率为300dpi,bbox_inches=’tight’参数表示将图像边界设置为紧凑型。
Axes的方法
plot()
plot()方法可以绘制不同样式的曲线。以下是一个示例代码:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x_data = [0, 1, 2, 3, 4, 5]
y_data = [0, 1, 2, 3, 4, 5]
ax.plot(x_data, y_data, label='linear') # 线图
ax.plot(x_data, [x**2 for x in x_data], label='quadratic') # 散点图
ax.plot(x_data, [x**3 for x in x_data], 'o', label='cubic') # 散点图
代码中,我们绘制了线图、散点图和圆圈图,并使用label参数添加图例。
set_xlabel()和set_ylabel()
set_xlabel()和set_ylabel()方法可以为Axes对象设置X轴和Y轴的标签。以下是一个示例代码:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x_data = [0, 1, 2, 3, 4, 5]
y_data = [0, 1, 2, 3, 4, 5]
ax.plot(x_data, y_data)
ax.set_xlabel('X Label') # 设置X轴的标签
ax.set_ylabel('Y Label') # 设置Y轴的标签
该代码设置了X轴和Y轴的标签。
set_title()
set_title()方法可以为Axes对象设置标题。以下是一个示例代码:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x_data = [0, 1, 2, 3, 4, 5]
y_data = [0, 1, 2, 3, 4, 5]
ax.plot(x_data, y_data)
ax.set_title('Example of Axes Title') # 设置Axes的标题
该代码设置了Axes的标题。
总结
通过本文的介绍,我们了解了Matplotlib中Figure和Axes的概念、用法及其常用方法。Figure和Axes类是Matplotlib绘图中最基本、最重要的类之一,熟练掌握它们可以轻松地绘制各种数据可视化图表。在实际应用中,我们可以根据需要选择更加高级的图形对象和方法,以便更好地呈现数据。