python matplotlib 库学习笔记

python 大法好,学习python 受益终身。

最近图像处理要用到 python matplotlib 库,有用到的话,都在这里记录。

官方样例地址: http://matplotlib.org/gallery.html

 

python matplotlib 绘图基本步骤

先看看如下代码:

 

1.载入matplotlib的绘图模块pyplot,并重命名为plt

 

2. 调用figure()创建一个Figure(图表)对象

还可以设置DPI(即每英寸所表示的像素数),缺省值为80。因此本例中所创建的Figure对象的宽度为“8*80 = 640”个像素。

3.调用plot()在当前的Figure对象中绘图

参数说明:

  1. X:X轴数据
  2. Y:Y轴数据
  3. 指定曲线的颜色和线性,如’b-‘表示,蓝色虚线(b:蓝色,-虚线)
  4. 使用关键字参数可以指定所绘制的曲线的各种属性:
  • label:给曲线指定一个标签名称,此标签将在图示中显示。如果标签字符串的前后有字符’$’,则matplotlib会使用其内嵌的LaTex引擎将其显示为数学公式。
  • color:指定曲线的颜色。颜色可以用如下方法表示
    • 英文单词
    • 以’#’字符开头的三个16进制数,如’#ff0000’表示红色。
    • 0~1的RGB表示,如(1.0, 0.0, 0.0)也表示红色。
  • linewidth:指定曲线的宽度,可以不是整数,也可以使用缩写形式的参数名lw。
    当然,它也可以同时画两个曲线,如下图,同时画出正弦和余弦曲线:

 

4.通过一系列函数设置当前Axes对象的各个属性:

  • xlabel、ylabel:分别设置X、Y轴的标题文字。
  • title:设置子图的标题。
  • xlim、ylim:分别设置X、Y轴的显示范围。
  • legend:显示图示,即图中表示每条曲线的标签(label)和样式的矩形区域。

5.调用plt.show()显示出绘图窗口

在通常的运行情况下,show()将会阻塞程序的运行,直到用户关闭绘图窗口。

保存图像

 

采用面向对象方法进行绘图

pyplot模块虽然用法简单,但不适合在较大的应用程序中使用。
当前的图表和子图可以使用gcf()和gca()获得

output:

plot()实际上会通过gca()获得当前的Axes对象ax,然后再调用它的plot()方法实现真正的绘图。

 

配置属性

plot()返回一个元素类型为Line2D的列表
下面的代码中,对x^3的数组取消了抗锯齿效果。

 

调用setp()可以同时配置多个对象的属性,这里我们同时设置两条曲线的颜色和线宽:

 

绘制多子图

一个Figure对象可以包含多个子图(Axes)
我们可以使用subplot()快速绘制包含多个子图的图表,它的调用形式如下:

  • 图表的整个绘图区域被等分为numRows行和numCols列,然后按照从左到右、从上到下的顺序对每个区域进行编号,左上区域的编号为1。
  • 如果新创建的子图和之前创建的子图区域有重叠的部分,则之前的子图将被删除。
  • numRows、numCols和plotNum三个参数都小于10,则可以把它们缩写成一个整数,例如subplot(323)和subplot(3,2,3)的含义相同
  • subplot()返回它所创建的Axes对象

如果希望某个子图占据整行或者整列,可以如下调用subplot():

sca()交替不同图/子图它们成为当前Axes对象,并调用plot()在其中绘图

 

在图表中显示中文

matplotlib的缺省配置文件中所使用的字体无法正确显示中文。为了让图表能正确显示中文,可以有几种解决方案。

  • 在程序中直接指定字体。
  • 在程序开头修改配置字典rcParams。
  • 修改配置文件。

下面是通过修改字体实现的。其实我也比较喜欢这个

 

其他

在图表中输出图像:plt.imshow(img)

 

柱状图

原地址http://matplotlib.org/examples/statistics/histogram_demo_features.html

 

本博客若无特殊说明则由 hrwhisper 原创发布
转载请点名出处:细语呢喃 > python matplotlib 库学习笔记
本文地址:https://www.hrwhisper.me/learning-notes-for-python-matplotlib/

听说帅的人已经打赏了

python learning, 学习 , , , . permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *