{DAY 25} Matplotlib 基础操作

前言

今天这篇要进入到资料视觉化

在前几篇的文章里,资料的形式多半是呈现在表格化的资料表上

为了让数据的呈现更为浅显易懂

此时资料变成图表就派上用场了!

可以让数字藉由图像化找出单纯看数字看不出来的insight

这里首先要介绍的视觉化模组是matplotlib

matplotlib是资料科学世界里最基本也是最常见的视觉化模组

Matplotlib官网介绍

在真实资料的场景中

很多时候的资料想要呈现的图表都不相同

有时候想要将图表拆成多个子图

或是想要换颜色

图例如果重叠怎麽办?

所以在学习视觉化的时候

很重要的是学会如何查出想要的答案

  1. 首先最基本的就是从Matplotlib官网上查询

    Tutorials - Matplotlib 3.4.3 documentation

    里面有各种图形的分类,还有教学

是个快速方便的使用资源

  1. Stakeoverflow

    Stack Overflow - Where Developers Learn, Share, & Build Careers

    上面会有很多的问答

    可以利用想要绘制的图,或是遇到的问题

    利用关键字搜寻是否有人问过或是解答过

    也可以自己在上面发问

认识图表

在学会绘图之前

先要知道一个图表是怎麽组成的

Figure:可以想像成是一张画布

Axes: 则是画布里面可以出现的子图,可以利用参数设定想要出现的子图数量、位置和各个子图的名称

接下来看官网上关於图表的介绍:图片来源

legend: 图例

major/miner tick label: 主要的栏位名称或是附加的栏位名称

grid: 格线

title: 子图名称

可以先初步建立对图表架构的概念

这之後在参数的使用上会很重要

建立图框

在这里我使用的是JupyterLab

先简介使用上很常使用的快捷键

就是Shift+Tab

可以在jupyter notebook 内直接开启函数的说明档案

不止用在matplotlib,在前面学到的NumPy,Pandas等Python的语法都可以查询

具体使用方式如下:

  1. 输入使用的函数名
  2. 按下快捷键shift+tab
  3. 会弹出说明的滚动式视窗
  4. 里面会教参数的解释、参数使用

现在来建立一个没有指定子图的画布

fig = plt.figure() 

当我们想要指定画布里出现一个子图

第一个方法:

会使用到plt.subplots()在括号里不要填上任何参数即可

fig = plt.subplots()

当我们想要建立一个2x2有四个子图的画布时

fig, axes = plt.subplots(2,2)

当我们想要指定特定的子图做图时,可以利用二维阵列的思维索引

像是axes[0,1],[1,1]的方式

可以看到若是指定axes[0,1],在画布上就会将指定的资料绘制在右上角的子图

第二个方法:

也可以先建立画布,使用plt.figure()

并加上参数figsize指定画布大小

再加上子图,使用add_subplot()

参数使用方式add_subplot(nrows, ncols, index, **kwargs)

同样假设想设计2x2的有四个子图的画布

并且将每个子图命名

fig = plt.figure(figsize=(10,5))
axe1 = fig.add_subplot(2, 2, 1) 
axe2 = fig.add_subplot(2, 2, 2) 
axe3 = fig.add_subplot(2, 2, 3) 
axe4 = fig.add_subplot(2, 2, 4) 

小结

现在认识了matplotlib

知道要怎麽查询跟使用工具

还学习了图表的架构跟如何建立图框

下一篇就会介绍基础的函数和参数

因为概念是共用的

最常使用到的是长条图、折线图、圆饼图、柱状图、散布图等等

所以学会变化参数很重要

接下来会结合前几篇学过的NumPy和Pandas练习!

前面的都要熟练才能往下继续


<<:  Day 25 阿里云上运行Kubernetes 1 - ACK

>>:  Golang 学习笔记-- 快速上手/重点整理 - 1

30-11 之Domain Layer - Transaction Script

接下来这一篇文章开始,我们要进入所谓 3-Tier 的『 Domain 』的部份,这个层级基本上就是...

[Day 28] Edge Impulse + BLE Sense实现影像分类(下)

=== 书接上回,[Day 27] Edge Impulse + BLE Sense实现影像分类(上...

Day 24. 事件处理 – v-on

v-on 在Vue.js 中我们可以使用v-on去监听 DOM 事件,当事件被触发时会呼叫我们设定的...

Prometheus 与 Spring boot

说到 Prometheus 不得提到监控,Prometheus能帮助我们指标数据采集、指标数据储存、...

CIA安全目标

曾就「资讯本身的破坏」和「资讯或资讯系统获取或使用中断」进行了辩论。然而,FISMA和FIPS 19...