PYTHON_matplotlib 的 pyplot 與 widgets 類 - updating

matplotlib(官网入口 [点击]) 是一个非常庞大且强大的 Python 工具包,凡事关联到图像化的应用(如:方程式绘图,图像色彩,数据可视化,键盘鼠标与图形交互功能,画面功能按钮设定,等等),是一个全方位的 module。但是从另一个角度来看,详尽的内容与功能对一个初学者而言,视野里就是复杂与难懂的规则与框架,好记忆不如烂笔头,而这里就是那个烂笔头着墨的一片天地。

p.s. 技术文档点击下载 [点击] ,文档一共有 18.3MB 之大,涵盖 2k 多页的内容。


安装方法 matplotlib 

windows case:打开 CMD 输入 where python 找到路径,利用此路径进入 Scripts 文件夹,在此文件夹下输入:

pip install matplotlib
# Then everything should be done in our computer

Mac / Linux case:打开 Terminal 不用输入任何路径的情况下,直接输入:

sudo pip3 install matplotlib
# If we want to install matplotlib for python3 version, use pip3 as the command.
# On the other hand, if we want to install matplotlib for python2 verision, use pip instead.

p.s. sudo 用来开启管理员权限去下载,可以避开非管理员状态的不必要限制。

这里有个特别要注意的地方,如果使用 Linux ubuntu 系统安装此包,需要额外安装 Tkinter,由于它们两个包彼此在调用函数的时候会穿插用到,但是 Linux 是一个纯手工的安装活,并不会额外为我们安装他认为我们也需要的东西,因此安装办法可以参考 [点击1][点击2]。方法主要为下面几条代码:

# use them in Terminal window
sudo apt-get install python3-tk   # or python-tk , it depends on python version in the system
sudo apt-get install python3-dev
sudo apt-get install python-devel

检查正确安装的方法就是进入 python 里面,输入 import matplotlib,没有报错即正确。


推荐相关文章


MENU for This Paragraph

  1. matplotlib.pyplot
  2. matplotlib.widgets
  3. more

依照上面目录清单的编号顺序一一详述每个类的内部功能,实际用法,与执行结果。


1. matplotlib.pyplot [点击]

这是一个最最最常用的绘图工具了,坐标图(连线,散点,平滑,...等),圆饼图,柱状图,甚至三维图都可以被完整呈现!最初开始一个 project 并且需要使用到这个包的时候,我们时常用 plt 作为这个大包的缩写:

import matplotlib.pyplot as plt
# or we can write code in the other way like...
from matplotlib import pyplot as plt
  • figure(1, figsize=(9, 3))
    它为我们制造一个 “视窗” 用来容纳那些我们即将定义的坐标,图形,数据资料等内容,为此我们需要定义这个坐标的名字和大小:
    1/2: 它可以是数字或是字符串,这边是用 “1” 来给命名,用以给这个跳出来的视窗命名
    2/2: 控制这个视窗的大小,如果设置不好,很可能没办法完全容纳下里面的坐标轴图像,这里的 9 表示 x 轴的长度,而 3 则表示 y 轴的长度。

    p.s. 默认情况下如果 () 里面什么都不填,那就是 1,如果连 plt.figure() 都没写,那也还是默认的 1 。

  • axis([0, 6, 0, 20], **kwargs)
    1/4: x 轴在坐标上显示的起始点
    2/4: x 轴在坐标上显示的终点
    3/4: y 轴在坐标上显示的起始点
    4/4: y 轴在坐标上显示的终点

    p.s. 有些参数加在坐标轴数字后面的位置提供给我们定制表格形式,官网上面写得更为详细。

  • plot([1, 2, 3], [1, 4, 9], 'ro')
    1/3: 表示在 x 轴上的数据位置,如果这里只有一组数据,则只代表 y 轴数据
    2/3: 表示在 y 轴上的数据位置,和 x 轴刚好形成三个坐标数据才行,不能多或少
    3/3: 表示在图形中画图的变现种类,这里的 'ro' 表示的是红色散点

    同一坐标系下叠加多组数据信息:
    # method 1st: specify them individually with respect data and formats
    plot(x1, y1, 'bo')
    plot(x2, y2, 'go')
    
    # method 2nd: write them all in the same parenthesis
    plot(x1, y1, 'g^', x2, y2, 'g-', ... and more)
    
    # the execution result of the code below is shown in graph
    plt.plot([1, 2, 3], [1, 4, 9], 'ro', [2, 3, 4], [4, 16, 32], 'g-', [3, 6, 9], [10, 20, 40], 'g^')

    p.s. 如果一个视窗里面只有被 plot 给使用了,其实在 matplotlib 的角度上看就是写了一行看不见的: plt.subplot(111)

  • subplot(nrows, ncols, index, **kwargs)

    它提供一个方法可以在同一个 figure 下面画出很多独立坐标轴的不同图表,并且彼此排列整齐,就像一个 figure 里面有隐形的 grid 一样把图标放在每个格子内。
    1/4: 填上数字,表示有几横列的图表单元将要被展现
    2/4: 填上数字,表示有几直行的图表单元将要被展现
    3/4: 填上数字,表示我们即将对从左上横着数下来到右下第几个位置的图做手脚
    4/4: 附加修改参数,可以调整背景颜色等

    plt.figure('hello')        # the window name would be 'hello'
    plt.subplot(211)
    plt.plot(range(12))
    plt.subplot(212, facecolor='y')
    plt.show()
    

    p.s. 代码中()里面的数字没有间隔的情况是他们保持着三位数的关系,如果要开一个 figure 里面有 4*5 个坐标,我们希望编辑第 11个的时候,就不能够写成:plt.subplot(4511) 这样的模式,只能够用逗号分开。

  • subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
    与上一个 subplot() 不同,多了一个 s ,并且其返回的值是一个元组(tuple),包含了两个 objects:figure & axis (which in short f and ax)。
    1/8: 填上数字,表示有几横列的图表单元将要被展现
    2/8: 填上数字,表示有几直行的图表单元将要被展现
    3, 4/8: True and False 用来控制是否让同为此 “subplots” 产生的单元图使用同一个坐标长度
    5/8: True and False 用来控制是否要把图片多的维度抹平
    ...

    返回了的两个 objects 可以另外调用函数去编辑其里面内容,如下代码:
    fig, axes = plt.subplots(2, 2, sharey=True)
    axes[0, 0].plot([1, 2, 3], [1, 8, 27])
    axes[0, 0].set_title('y = x^3 function')
    axes[1, 1].plot([1, 2, 3], [1, 4, 9])
    axes[1, 1].set_title('square function')
    plt.show()

    更多 fashion 的介绍可以点击标题参考 official website。

  • xlabel('the words we want to say below the x axis')
  • ylabel('the words we want to say below the x axis')
    上面两个小方法顾名思义就是为坐标轴命名,例如 x 轴下面要标注 “供给” ,y 轴下面要标注 “需求” 的时候,这就是一个很棒的方法。字体与颜色等配置可以经由在 () 添加描述来完成。

  • show()
    一般 () 里面都是空的不放东西,show 的用途就是在所有参数都定义好了,例如:坐标,视窗位置,颜色,数据分布,图形交互,... 等,在最后的最后,把这些定义好的东西 show 出来的一个方法。在计算机编程中,画图,设定图都是在背后进行的,具体可视化的最终阶段即 show()。

  • close()
    一般()里面也是不放东西的,用来关掉被 plt.show() 召唤出来的视窗们,但是如果要制定关掉什么东西时,()里面的参数就可以派上用场。由于每次打开的一个视窗,都是占用内存的表现,记得在执行完程序后关掉所有的视窗也是一件很重要的事情,可以及时为电脑减负。
    close()          # close the current figure
    close(fig)       # close 名为 fig 的物件(object)
    close(num)       # close the figure number "num"
    close(name)      # close the figure string name "name"
    close('all')     # close all figures at once
    
  • more


2. matplotlib.widgets [点击]

这是一个内涵许多可以与坐标中的图互动的交互图形工具集,例如可以使用鼠标在图中想要的位置框出方形或是圆形面积,借此识别或标注图中的特定坐标位置做进一步数据处理。但就像我们使用螺丝刀一样,不会一次把所有螺丝刀全部倒在桌上使用,肯定是需要哪个找哪个,同理这盒 matplotlib 提供的工具,因此引入使用的时候喜欢这样:

from matplotlib.widgets import EllipseSelector
from matplotlib.widgets import RectangleSelector
p.s. 引入的两行代码分别就是让我们在图上框出 “圆形 Ellipse” 与 “方形 Rectangle” 的工具。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值