python中,常常需要数据(结果、日志等)可视化,从而观察和记录数据,借助matplotlib包中plot()函数可以很好地展示数据。

一、认识plot() 函数和subplot()函数    

plot()调用的常用语法:

plt.plot(x, y, linestyle=, marker=, color=, linewidth=, markersize=, label=, )

注意:1.其中linestyle=, marker=, color=, linewidth=, markersize=, label=, 格式是可选的。

            2.label是图例标签,不是图的标题

二、运用plot()函数

1.以下是一个完整的plot()函数运用例子:

import matplotlib.pyplot as plt  # 导入matplotlib包中的plot()函数
import numpy as np               # 导入numpy数组包
x = np.linspace(0,4,10)         # 定义x为0到5,10个点,大家根据自己需要修改参数
y = x                           # 定义y与X的关系
# 调用plot()函数,其中线条颜色:红色,线条样式为:虚线,点标记形状为:星型
plt.plot(x,y,color='red',linestyle='--',marker='*')   
# 通常情况会简化参数的书写,例如简写为‘r--*’(表示:红色/虚线/星型),大家根据需要可以修改参数
# plt.plot(x,y,'r--*')   
plt.show()

 效果如下:

python plt子图图例放在边框上方_子图

从图中可以看到,效果展示较为单调,通过添加一些说明,可以进一步丰富图像。

2.以下例子中,添加了标题、图例、轴标题等说明。

import matplotlib.pyplot as plt  # 导入matplotlib包中的plot()函数
import numpy as np               # 导入numpy数组包
x = np.linspace(0,4,10)          # 定义x为0到4,10个点,大家根据自己需要修改参数
y = x                            # 定义y与X的关系
plt.plot(x,y,color='red',linestyle='--',marker='*',label='y=x') # 注意这里添加了图例标签:'y=x'
plt.title('linear function')   #添加图标题
plt.xlabel('X axis')           #添加x轴名
plt.ylabel('Y axis')           #添加y轴名
plt.legend()                   #调用legend()图例函数
plt.show()                     #展示图像

效果如下: 

python plt子图图例放在边框上方_子图_02

三.运用subplot()函数

为了对比前后两者的区别,往往我们会调用subplot()函数,将图形窗口划分为多个子区域,并在每个子区域中绘制不同的内容,从而更加直观比较和分析多组结果,让可视化更加有条理。

以下是一个子图划分的例子:(上述基础上增加了二次函数:y=x**2-4*x+4)

import matplotlib.pyplot as plt          # 导入matplotlib包中的plot()函数
import numpy as np                       # 导入numpy数组包
x = np.linspace(0,4,10)  # 定义x为0到4,10个点,大家根据自己需要修改参数

'''1.划分子图,子图区域为:2行2列,绘制二次函数'y=x',并放在第一行第1个'''
plt.subplot(2,2,1)                 # #预制位置为:第一行第1个
y = x                                    # 定义一次函数‘y=x’
plt.plot(x,y,color='red',linestyle='--',marker='*') # 绘制‘y=x’图

'''2.丰富‘y=x’内容,并放在第一行第2个'''
plt.subplot(2,2,2)         #预制位置为:第一行第2个
plt.plot(x,y,color='red',linestyle='--',marker='*',label='y=x') # 绘制‘y=x’
plt.title('linear function')     #添加图标题
plt.xlabel('X axis')             #添加x轴名
plt.ylabel('Y axis')             #添加y轴名
plt.legend()                     #调用legend()图例函数
'''3.绘制二次函数'y=x**2-4*x+4',并放在第二行第1个'''
plt.subplot(2,2,3)          #预制位置第二行第1个
y=x**2-4*x+4                      #定义二次函数
plt.plot(x,y,color='green',linestyle='-.',marker='o',label='y=x*x-4*x+4') #绘制'y=x*x-4*x+4'
plt.title('quadratic function')   #添加图标题
plt.xlabel('X axis')              #添加x轴名
plt.ylabel('Y axis')              #添加y轴名
plt.legend()                      #调用legend()图例函数

'''4.将一次函数'y=x'和二次函数'y=x**2-4*x+4'绘制在一张图上,并放在第二行第4个'''
plt.subplot(2,2,4)
y1=x
y2=x**2-4*x+4
plt.plot(x,y1,'r--*',label='y=x')
plt.plot(x,y2,'g-.o',label='y=x*x-4*x+4')
plt.title('fusion')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.legend()
plt.tight_layout()  #tight_layout() 函数来自动调整子图间距,从而避免部分内容(标题等)被遮住
plt.show()          #展示图像

效果如下所示:

python plt子图图例放在边框上方_子图_03


四、总结

1.plot()函数绘制图像,subplot()函数绘制不同子图在一个图像上。

2.运用plot()函数时,需要明确数据的x和y,如果需要在同一个图像中展示多组数据,建议用图例标注每组数据,并且对设置每组数据的线条格式,以便进行每组数据分析和对比数据。

3.运用subplot()函数,首先需要预置子图,然后再编辑子图展示的内容,注意运用tight_layout()函数进行整体布局,让每个子图独立分布区域。

4.show()需要放置展示图的后面。