【欠拟合、过拟合(L1正则化、L2正则化)】这篇文章里面,我们用了一个简单的等高线来帮助大家理解问题,那么有同学会问:我怎么才能画出高级的等高线的图呢?

今天我们就来学习一下,python如何画出等高线的,这里主要用到matplotlib.pyplot包的contour、contourf
contour:矩阵的等高线
contourf:填充的等高线

大家可能还不是很了解这两个有什么区别,那么我们就简单的举个例子来看看,这两个函数都是怎么画出等高线的

1、给出数据

首先我们给出一组数据X,Y,Z,其中
在这里插入图片描述

###### 数据X,Y,Z
x = np.arange(-10, 10, 0.01) # 步长为0.01,即每隔0.01取一个点
y = np.arange(-10, 10, 0.01) # 步长为0.01,即每隔0.01取一个点
X, Y = np.meshgrid(x, y)     # 将原始数据变成网格数据形式
Z = X**2 + Y**2              # 我们假设Z为关于X,Y的函数,以Z=X^2+Y^2为例

2、画图

1)区别对比

ct = plt.contour(X,Y,Z,25)     # 画等高线,25:等高线的数目 
ctf = plt.contourf(X,Y,Z,25)   # 画等高线,25:等高线的数目

在这里插入图片描述

2)画出图形

ctf = plt.contourf(X,Y,Z,15) 
ct = plt.contour(X,Y,Z,15,colors='k')    # 等高线设置成黑色
plt.clabel(ct, inline=True, fontsize=10) # 添加标签
# plt.pcolormesh(X, Y, Z)     # 绘制分类背景图
plt.colorbar(ctf)  # 添加cbar
# plt.xticks(())  # 去掉x标签
# plt.yticks(())  # 去掉y标签

在这里插入图片描述

3)改变等高线填充颜色

ctf = plt.contourf(X,Y,Z,15,cmap=plt.cm.hot) # 设置为成热图
ct = plt.contour(X,Y,Z,15,colors='k')    # 等高线设置成黑色
plt.clabel(ct, inline=True, fontsize=10) # 添加标签
plt.colorbar(ctf)  # 添加cbar

在这里插入图片描述

4)等高线变成虚线

x = np.arange(-10, 10, 0.01) # 步长为0.01,即每隔0.01取一个点
y = np.arange(-10, 10, 0.01) # 步长为0.01,即每隔0.01取一个点
X, Y = np.meshgrid(x, y)     # 将原始数据变成网格数据形式
Z = -(X**2 + Y**2)           # 我们假设Z为关于X,Y的函数,以Z=-(X^2+Y^2)为例
ctf= plt.contourf(X,Y,Z,15) 
ct = plt.contour(X,Y,Z,15,colors='k')    
plt.clabel(ct, inline=True, fontsize=10) # 添加标签
plt.colorbar(ctf)  # 添加cbar

在这里插入图片描述
详细内容请看我公众号~
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐