matplotlib绘图优化-绘制轮廓图和进行填充(contourf)

  • A+
所属分类:python数据分析
摘要这一篇文章主要介绍如何绘制轮廓线和对轮廓进行填充, 也就是函数contourf的简单使用. 同时这一篇会来解决三个问题, 首先是contourf中lists的作用, 接着是如何自定义使用的颜色, 最后是如何在图上加上Legend.

简介

这一篇文章主要介绍如何绘制轮廓线对轮廓进行填充. 其实就是主要介绍contourf函数的简单使用方式. 主要会分为三个方面进行说明, 首先是函数中参数levels的作用, 接着是如何自定义使用的颜色和最后如何加上Legend.

参考链接: How do you create a legend for a contour plot in matplotlib?

contourf函数的官方文档: matplotlib.pyplot.contourf

绘图

levels的作用

首先是参数设置中levels的作用. 当他输入时整数的时候, 如levels=3, 他会将数值分成三份, 设置为10就是分为10份, 可以看下面的例子.

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x, y = np.meshgrid(np.arange(10),np.arange(10))
  4. z = np.sqrt(x**2 + y**2)
  5. cs = plt.contourf(x,y,z,levels=10)
  6. plt.show()
matplotlib绘图优化-绘制轮廓图和进行填充(contourf)

当然levels后面也是可以跟lists, 注意lists中的数字必须从小到大. 这个数字表示的是a0-a1是一部分, a1-a2是一部分. 比如levels=[2,3,4,6], 就表示2<x<3, 3<x<4, 4<x<5, 5<x<6, 最终的结果如下图所示.

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x, y = np.meshgrid(np.arange(10),np.arange(10))
  4. z = np.sqrt(x**2 + y**2)
  5. cs = plt.contourf(x,y,z,levels=[2,3,4,6])
  6. plt.show()
matplotlib绘图优化-绘制轮廓图和进行填充(contourf)

自定义颜色

自定义颜色需要配合levels来进行使用, 比如我们指定了levels对应着三个范围, 我们就可以对这三个范围依次设置颜色, 如下所示.

  1. x, y = np.meshgrid(np.arange(10),np.arange(10))
  2. z = np.sqrt(x**2 + y**2)
  3. cs = plt.contourf(x,y,z,levels=[2,3,4,6], colors=['lightgreen', 'royalblue', 'gold'])
  4. plt.show()

最终的结果如下所示:

matplotlib绘图优化-绘制轮廓图和进行填充(contourf)

添加Legend

最后就是在contourf中添加Legend, 这个我也是从上面的参考链接里看到的, 可以直接进行使用.

  1. x, y = np.meshgrid(np.arange(10),np.arange(10))
  2. z = np.sqrt(x**2 + y**2)
  3. cs = plt.contourf(x,y,z,levels=[2,3,4,6], colors=['lightgreen', 'royalblue', 'gold'])
  4. # -----------
  5. # 添加Legend
  6. # -----------
  7. proxy = [plt.Rectangle((0,0),1,1,fc = pc.get_facecolor()[0]) for pc in cs.collections]
  8. plt.legend(proxy, ["range(2-3)", "range(3-4)", "range(4-6)"])
  9. plt.show()
matplotlib绘图优化-绘制轮廓图和进行填充(contourf)
  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: