专栏首页浊酒清味Python进阶之Matplotlib入门(七)

Python进阶之Matplotlib入门(七)

引言

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函数:

  • coutourf函数负责填充颜色,其中数字8为等高线的密集程度;alpha为透明度;cmap为颜色风格,它会根据f(x,y)的值不同而选择不同的颜色。具体颜色范围请看这里:

https://matplotlib.org/examples/color/colormaps_reference.html

倒数第三个为我们选择的颜色风格,大家可以尝试别的颜色风格。

仅仅有contourf函数的结果如下:

  • contour函数负责划线,颜色为黑色,效果如下图:
  • clabel函数负责添加等高线对应的高度,inline控制是否将Label画在线里面。

图像显示

现在我们介绍一个叫做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数组的结果。其中

  • imshow函数负责打印数组变成图片,cmap我们选择了bone的风格;
  • colorbar函数负责显示右边的颜色棒,上面会显示不同数值对应的颜色,方便大家判断。

最后,我们增大数组的大小,改变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与机器学习之路(gh_39aead19f756),作者:Huangwei AI

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python进阶之Matplotlib入门(三)

    Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技...

    HuangWeiAI
  • Python进阶之Matplotlib入门(二)

    Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技...

    HuangWeiAI
  • 手把手教你使用PCA进行数据降维

    对数据降维可以帮助我们提取数据集的主要信息,即将原始的高维特征空间压缩到低纬度的特征子空间。数据降维是用于提高计算效率的典型手段,另一个好处是也能够减小维度诅咒...

    HuangWeiAI
  • 18.2.18日报

    2,修复devtools无法执行console命令的bug。原因有两,一个是输入enter的keyEvent.keyIdentifier没填"Enter",

    龙泉寺扫地僧
  • python科学计算之numpy

    1.np.logspace(start,stop,num): 函数表示的意思是;在(start,stop)间生成等比数列num个 eg:  import num...

    Gxjun
  • 吴恩达机器学习笔记-1

    这个系列教程大名鼎鼎,之前我都是用到啥就瞎试一通;最近花了两个周,认认真真把这些基础知识重新学了一遍;做个笔记; 苏老泉二十七始发愤,我这比他还落后;不过求知的...

    happy123.me
  • 《Springboot开发问题纪要》java.lang.IllegalArgumentException: Request header is too large问题日志:java.lang.Ille

    org.apache.coyote.http11.AbstractHttp11Protocol

    一个会写诗的程序员
  • NumPy Beginner's Guide 2e 带注释源码 六、深入 NumPy 模块

    ApacheCN_飞龙
  • Android Sqlite并发问题

    如上异常堆栈中的错误信息error code 5: database is locked,经过查找发现code为5代表sqlite中的SQLITE_BUSY异常...

    大大大大大先生
  • Python金融大数据分析-BSM、Term Struc、Ho-Lee 与Vasicek模型路径仿真

            这一篇的代码是之前蒙特卡洛仿真改过来的,大家都知道,用MC绘制路径是一件很好玩的事情。在学习FRM的过程中,遇到了几种利率模型,Term Str...

    钱塘小甲子

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动