用途:
Matplotlib绘制折线图常用于展示数据随时间或其他连续变量的变化趋势。
3.1绘制默认折线图
3.1.1导入相关库
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
3.1.2数据准备
#准备相关数据
N = 100 #定义一个变量,值为50
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为50的数组,范围在1~10之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
3.1.3绘制折线图
#绘制折线图
plt.plot(x, y)
3.1.4设置图表标识
#设置图表标题和坐标轴标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.title('绘制默认折线图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
3.1.5显示图表
#显示图表
plt.show()
3.2设置折线图线型、分面
3.2.1导入相关库及数据准备
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 100 #定义一个变量,值为100
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:
3.2.2绘制折线图(修改折线图线型、分面展示)
#绘制折线图
rows = 2 # 定义网格的行数,表示有2行
columns = 2 # 定义网格的列数,表示会有2列
grid = plt.GridSpec(rows, columns, wspace=.3, hspace=.3) # 创建一个网格布局
# GridSpec是matplotlib库中的一个类,用于创建网格布局
# wspace和hspace参数分别定义了网格列和行之间的间距,这里设置为0.3,表示列和行之间各有30%的间距
linestyles = ['-', '--', '-.', ':'] #线条样式分别为实线、破折线、点划线、虚线
plt.figure(dpi=120) #分辨率为120
for i in range(len(linestyles)): # 循环遍历linestyles列表中的所有线型
plt.subplot(grid[i]) # 在grid指定的子图位置创建一个新的子图
plt.plot(
x,
y,
linestyle=linestyles[i], #linestyle设置线型
label=r'y = sin^2(x) + cos(x)')
plt.axis('equal') # 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend() # 显示图例,图例显示了不同线型对应的标签
# 使用plt.annotate()函数在图表上添加注释
plt.annotate("linestyle '" + str(linestyles[i]) + "'",# 注释的内容,显示当前的线型
xy=(0.5, -2.5),# 注释的位置坐标,xy参数表示注释文本左下角的位置
va='center', # 垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
ha='left') # 水平对齐方式,'left'表示文本在指定位置的左对齐
#显示图表
plt.show()
3.2.3显示图表
3.3设置折线图宽度
3.3.1导入相关库及数据准备
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 100 #定义一个变量,值为100
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
3.3.2设置折线图宽度
修改折线图宽度linewidth = [2, 3, 4, 5]
#绘制折线图
rows = 2 # 定义网格的行数,表示有2行
columns = 2 # 定义网格的列数,表示会有2列
grid = plt.GridSpec(rows, columns, wspace=.3, hspace=.3) # 创建一个网格布局
# GridSpec是matplotlib库中的一个类,用于创建网格布局
# wspace和hspace参数分别定义了网格列和行之间的间距,这里设置为0.3,表示列和行之间各有30%的间距
#修改折线图宽度
linewidth = [2, 3, 4, 5]
linestyles = ['-', '--', '-.', ':'] #线条样式分别为实线、破折线、点划线、虚线
plt.figure(dpi=160) #分辨率为160
for i in range(len(linestyles)): # 循环遍历linestyles列表中的所有线型
plt.subplot(grid[i]) # 在grid指定的子图位置创建一个新的子图
plt.plot(
x,
y,
linestyle='-.', #linestyle设置线型
lw=linewidth[i],#设置折线图宽度
label=r'y = sin^2(x) + cos(x)')
plt.axis('equal') # 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend() # 显示图例,图例显示了不同线型对应的标签
# 使用plt.annotate()函数在图表上添加注释
plt.annotate("linestyle '" + str(linestyles[i]) + "'",# 注释的内容,显示当前的线型
xy=(0.5, -2.5),# 注释的位置坐标,xy参数表示注释文本左下角的位置
va='center', # 垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
ha='left') # 水平对齐方式,'left'表示文本在指定位置的左对齐
#显示图表
plt.show()
3.3.3显示图表
3.4设置折线图标记
3.4.1导入相关库及数据准备
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
N = 100 #定义一个变量,值为100
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
3.4.2折线图添加标记
折线图添加marker
#绘制折线图
plt.figure(dpi=160) #分辨率为160
plt.plot(
x,
y,
'o',#标记用圆圈表示
ls='-.',#折线图的样式
lw=2,#设置折线图宽度
ms=7, #marker大小
markevery=12, #每隔12个点添加marker
label=r'y = sin^2(x) + cos(x)')
plt.axis('equal')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()# 添加图例,与上面的label相对应
plt.annotate("markevery: 5", xy=(0.5, -2.5), va='center', ha='left')
# "markevery: 5", 注释的内容,表示标记每个第5个点
# xy=(0.5, -2.5), 注释的位置坐标,xy参数表示注释文本左下角的位置
# va='center',垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
# ha = 'left' # 水平对齐方式,'left'表示文本在指定位置的左对齐
#显示图表
plt.show()
3.4.3显示图表
3.5折线图多标记、标记间距设置
3.5.1代码
不同折线图添加不同marker、按照不同的间距绘制
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 100 #定义一个变量,值为100
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
#绘制折线图
rows = 2 # 定义网格的行数,表示有2行
columns = 2 # 定义网格的列数,表示会有2列
grid = plt.GridSpec(rows, columns, wspace=.3, hspace=.3) # 创建一个网格布局
# GridSpec是matplotlib库中的一个类,用于创建网格布局
# wspace和hspace参数分别定义了网格列和行之间的间距,这里设置为0.3,表示列和行之间各有30%的间距
mark = [5, 8, 13, 15] #标记的间隔
color = ['#00429d', '#627c94', '#f4777f', '#93003a'] #标记的颜色
plt.figure(dpi=150) #分辨率为160
linestyles = ['-', '--', '-.', ':'] #线条样式分别为实线、破折线、点划线、虚线
for i in range(len(linestyles)): # 循环遍历linestyles列表中的所有线型
plt.subplot(grid[i]) # 在grid指定的子图位置创建一个新的子图
plt.plot(
x,
y,
'o', # 标记用圆圈表示
ls='-.', # 折线图的样式
lw=2, # 设置折线图宽度
ms=7, # marker大小
markevery=mark[i], # 添加间隔
color=color[i],#添加颜色
label=r'y = sin^2(x) + cos(x)')
plt.axis('equal') # 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
# 使用plt.annotate()函数在图表上添加注释
plt.annotate("markevery:" + str(mark[i]) ,# 注释的内容,显示当前的线型
xy=(0.5, -2.5),# 注释的位置坐标,xy参数表示注释文本左下角的位置
va='center', # 垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
ha='left') # 水平对齐方式,'left'表示文本在指定位置的左对齐
plt.legend() # 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.xlabel('$x$ (x轴)')
#显示图表
plt.show()
3.5.2显示图表
3.6设置折线图误差
3.6.1折线图添加误差线代码
使用errorbar方法添加误差线
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 50 #定义一个变量,值为50
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
np.random.seed(100) # 设置随机数种子为100
noise_x = np.random.random(N) * .2 + .1# 生成N个随机数,范围在0到1之间,然后乘以0.2,再加上0.1。
noise_y = np.random.random(N) * .7 + .4
plt.figure(dpi=120)#图片分辨率为120
#使用errorbar方法添加误差线
plt.errorbar(
x,
y,
yerr=noise_y, #y轴方向添加误差线
xerr=noise_x, #x轴方向添加误差线
label=r'y = sin^2(x) + cos(x)')
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.xlabel('x轴')
#显示图表
plt.show()
3.6.2显示图表
3.7折线图仅保留误差线
3.7.1代码
fmt='o'【注意此代码】
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 50 #定义一个变量,值为50
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
np.random.seed(100) # 设置随机数种子为100
noise_x = np.random.random(N) * .2 + .1# 生成N个随机数,范围在0到1之间,然后乘以0.2,再加上0.1。
noise_y = np.random.random(N) * .7 + .4
plt.figure(dpi=150)#图片分辨率为150
#使用errorbar方法添加误差线
plt.errorbar(
x,
y,
yerr=noise_y, #y轴方向添加误差线
xerr=noise_x, #x轴方向添加误差线
label=r'y = sin^2(x) + cos(x)',
color='r', #marker颜色
fmt='o', #marker形状,表示只用圆形标记数据点而不用线条连接它们
ecolor='blue') #误差线颜色
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.xlabel('x轴')
#显示图表
plt.show()
3.7.2显示图表
3.8设置折线图填充
3.8.1折线图填充代码
使用fill_between方法,该函数用于填充两条水平曲线之间的区域。
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 50 #定义一个变量,值为50
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
np.random.seed(100) # 设置随机数种子为100
noise = np.random.random(N) * .7 + .4
plt.figure(dpi=150)#图片分辨率为150
plt.plot(x, y, ls='-', label=r'y = sin^2(x) + cos(x)') #绘制折线图
#使用fill_between方法
plt.fill_between(
x,
y + noise, #y轴上方区域
y - noise, #y轴下方区域
alpha=.3)# 填充区域的透明度,0表示完全透明,1表示完全不透明
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.xlabel('x轴')
#显示图表
plt.show()
3.8.2显示图表
3.9在折线图中添加垂直线
3.9.1在折线中添加垂直线代码
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 50 #定义一个变量,值为50
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
np.random.seed(100) # 设置随机数种子为100
noise = np.random.random(N) * .7 + .4
plt.figure(dpi=150)#图片分辨率为150
plt.plot(x, y, ls='-', label=r'y = sin^2(x) + cos(x)') #绘制折线图
#使用fill_between方法
plt.fill_between(x,y + noise, y - noise, color='darkgreen',alpha=.3)
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
#hlines绘制水品线
plt.hlines(
1, #y轴位置
xmin=0, #x轴起始位置
xmax=15, #x轴终止位置
ls='--', #线型
color='red', #线颜色
label='水平线') #图例
#hlines绘制垂直线
plt.vlines(5, #x轴位置
ymin=-6, #y轴起始位置
ymax=6,#y轴终止位置
ls='--', #线型
color='blue', #线颜色
label='绘制垂直线')#图例
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.xlabel('x轴')
#显示图表
plt.show()
3.9.2显示图表
3.10在折线图中添加垂直面
3.10.1添加y轴方向垂直平面代码
#导入相关库
import numpy as np #导入numpy库
import matplotlib.pyplot as plt #导入matplotlib的绘图模块
#准备相关数据
N = 50 #定义一个变量,值为50
x = np.linspace(0., 15., N) #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x) #y变量数据:基与x生成y
np.random.seed(100) # 设置随机数种子为100
noise = np.random.random(N) * .7 + .4
plt.figure(dpi=150)#图片分辨率为150
plt.plot(x, y, ls='-', label=r'y = sin^2(x) + cos(x)') #绘制折线图
#使用fill_between方法
plt.fill_between(x,y + noise, y - noise, color='darkgreen',alpha=.3)
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.fill_between((2, 4), -3.2, 3.2, facecolor='blue', alpha=0.3)#填充区域在此修改
#表示填充区域的 x 坐标范围,即从2到4
#表示填充区域的 y 坐标上下限,即填充的区域是在 y = -3.2 到 y = 3.2 的范围内
plt.xlim(0, 10)#表示 x 轴的显示范围从0到10
plt.ylim(-3, 3)#表示 y 轴的显示范围从-3到3
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号
plt.xlabel('x轴')
#显示图表
plt.show()
3.10.2显示图表
以上是绘制折线图的代码分享,在学习过程中,大家有什么疑惑可以相互交流哦。