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 [点击]
这是一个最最最常用的绘图工具了,坐标图(连线,散点,平滑,...等),圆饼图,柱状图,甚至三维图都可以被完整呈现!最初开始一个 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” 的工具。