引言
Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技能。对于这个教程,大家最好亲自码一遍代码,这样可以更有收获。
概要
1、掌握Matplotlib中的等高线图画法;
2、掌握Matplotlib中的图像显示用法;
等高线图
等高线图是一种常见的图的类型。
它指的是地形图上高程相等的相邻各点所连成的闭合曲线。把地面上海拔高度相同的点连成的闭合曲线,并垂直投影到一个水平面上,并按比例缩绘在图纸上,就得到等高线。等高线也可以看作是不同海拔高度的水平面与实际地面的交线,所以等高线是闭合曲线。在等高线上标注的数字为该等高线的海拔。
今天我们要学习的图例为:
实现上面等高线图的代码:
import numpy as npimport matplotlib.pyplot as plt
def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 256x = np.linspace(-3,3,n)y = np.linspace(-3,3,n)X,Y = np.meshgrid(x,y)
plt.contourf(X, Y, f(X,Y), 8, alpha=.75, cmap='jet')C = plt.contour(X, Y, f(X,Y), 8, colors='black', linewidth=.5)plt.clabel(C, inline=True, fontsize=10)plt.xticks(())plt.yticks(())
plt.show()
我们先构造一个二维平面“网格”,这里用到了NumPy中的linspace函数,横纵坐标都分成256份。我们用NumPy中的meshgrid函数构造网格。有了网格之后,我们定义f(x,y)函数来作为高度函数。
接下来就是使用画等高线图的三个函数coutourf,contour以及clabel函数:
https://matplotlib.org/examples/color/colormaps_reference.html
倒数第三个为我们选择的颜色风格,大家可以尝试别的颜色风格。
仅仅有contourf函数的结果如下:
图像显示
现在我们介绍一个叫做imshow的函数,它可以将一个二维数组的值变成颜色打印出来。比如
import matplotlib.pyplot as pltimport numpy as np
def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 3x = np.linspace(-3,3,3*n)y = np.linspace(-3,3,3*n)X,Y = np.meshgrid(x,y)plt.imshow(f(X,Y),cmap='bone')plt.colorbar()plt.show()
运行结果:
这个例子中,我们先观察一个9*9数组的结果。其中
最后,我们增大数组的大小,改变camp风格,看一下更加漂亮的结果:
import matplotlib.pyplot as pltimport numpy as np
def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 256x = np.linspace(-3,3,3*n)y = np.linspace(-3,3,3*n)X,Y = np.meshgrid(x,y)plt.imshow(f(X,Y),cmap='jet')plt.colorbar()plt.show()
请大家对比imshow和contour画出来的图的异同。
本文分享自 Python与机器学习之路 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!