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()
效果如下:
从图中可以看到,效果展示较为单调,通过添加一些说明,可以进一步丰富图像。
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() #展示图像
效果如下:
三.运用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() #展示图像
效果如下所示:
四、总结
1.plot()函数绘制图像,subplot()函数绘制不同子图在一个图像上。
2.运用plot()函数时,需要明确数据的x和y,如果需要在同一个图像中展示多组数据,建议用图例标注每组数据,并且对设置每组数据的线条格式,以便进行每组数据分析和对比数据。
3.运用subplot()函数,首先需要预置子图,然后再编辑子图展示的内容,注意运用tight_layout()函数进行整体布局,让每个子图独立分布区域。
4.show()需要放置展示图的后面。