matplotlib基础教程

matplotlib是python中最常用的绘图包,其他很多包(如seaborn)都是对它的更高层次的抽象实现。

它是个超大包,涉及很多概念,但有些晦涩难懂,画起图来,常常做不到得心应手。

本教程旨在:对matplotlib庖丁解牛,介绍它的各个组件,以后遇到问题,知道问题归属,知道怎么查看帮助文档。

一、hello world

每个语言都有自己的起手式:hello world,但matplotlib的起手式并不简单,主要是有N种,常令我之小白选择困难症发作。

**起手式–第一式 **(这个全天下都一样,无脑用即可):

import matplotlib.pyplot as plt # 导入绘图模块

起手式–第二式(一)

# 什么鬼,没代码?不用起手?
# 是的,第一种方法不用起手,直接进入下一式:
# 如:
#	画线式:plot.plot()
# 	散点式:plot.scatter()
#	柱状式:plot.bar()
#   ...

起手式–第二式 (二)

fig = plt.figure()
ax = fig.add_subplot(111)

起手式–第二式 (三):

fig, ax = plt.subplots()

这么多起手式,该怎么选择呢,大家无脑记住使用第三种方法就行,不要问为什么,记住就行。现在总结以下matplotlib的起手式

import matplotlib.pyplot as plt # 导入绘图模块
fig, ax = plt.subplots()

那么fig和ax是什么呢,下一节我们就来讲讲。

二、图片的组成部分

这节我们的任务就是拆解下面这张图:
在这里插入图片描述

先介绍下这里面涉及到的一些基本概念:

  • figure:画布,画画的纸

  • axes:画图区。

    ​ 这个是啥意思,为什么画图区不是整张画布(figure)?

    ​ 请看下面第一张图,红色框内的区域就是figure,也就是我们的画纸,黑色框内的区域就是axes,也就是我们的作图区。figure和axes之间的区域就叫留白(这词用的不准确,明白意思即可):主要是为了在将图片裱起来时不遮挡内容。

    ​ 一个figure可以包含多个axes,如第二张图。

在这里插入图片描述
在这里插入图片描述

  • axis:坐标轴

    它有几个部分组成:

在这里插入图片描述

spines:脊柱线。 一个axes默认共有4个spine,分别通过ax.spines["left"],

ax.spines["bottom"], ax.spines["right"], ax.spines["top"] 获得。

ticks: 刻度线。 通过ax.get_ticks()获得,ax.set_ticks()设置。

ticklabels: 刻度标签。 通过ax.get_ticklabels()获得,ax.set_ticklabels()设置。

  • title: 图片标题。 通过ax.set_title()设置。

  • x/y label:X轴/Y轴的标题。 通过ax.set_xlabel()ax.set_ylabel()设置。

下面来操作一波:

  1. 起手式:

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    

    fig就是figure, ax就是axes

  2. spines操作:

    # 隐藏上边的spine
    ax.spines["top"].set_visible(False)
    # 隐藏右边的spine
    ax.spines["right"].set_visible(False)
    # 将下边的spine设置成红色
    ax.spines["bottom"].set_color("red")
    # 将下边的spine加粗
    ax.spines["bottom"].set_linewidth(3)
    
  3. ticks操作:

    # 分别在x轴的 0,0.1,...,0.9,1 处设置刻度线
    ax.set_xticks([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1])
    # 在y轴的 0.1,0.3, 0.5, 0.7, 0.9 处设置副刻度线
    ax.set_yticks([0.1,0.3,0.5,0.7,0.9], minor=True)
    # 将X轴的ticks加粗加长,并设置成蓝色
    ax.get_xaxis().set_tick_params(size=5, width=3, color="blue")
    
  4. ticklabes操作:

    # 将x轴的刻度标签改为A_0, A_1, ... , A_10, 颜色改为蓝色, 并旋转90度
    ax.set_xticklabels(["A_"+str(i) for i in range(12)], color="blue", rotation=90)
    # 将第3个刻度标签加粗
    xticklabels_list = ax.get_xticklabels()
    xticklabels_list[2].set_fontweight("bold")
    
  5. title, xlabel, ylabel操作

    # 将图片标题设置为"Axes"
    ax.set_title("Axes")
    # 将Y轴标题设置为“Xlabel”, 颜色:绿色,底色:黄色
    ax.set_xlabel("Ylabel", color="green", backgroundcolor="yellow")
    
  6. 欣赏作品

    # 交互式界面, 如ipython
    fig.show()
    # 非交互界面
    fig.savefig("my_first_figure.png")
    

上面介绍的都是些基本招式,不会不行,但只学这些肯定不够用,招式无穷无尽,死记硬背反而落了下成,下面我将传授本门内功心法

  1. 首先得准备一件趁手兵器 – ipython。

  2. 借助ipython,获得对象的所有方法或属性

    # 查看figure对象的所有方法属性
    fig.*?
    # 查看axes对象中包含"get_"字符串的方法属性
    ax.*get_*?
    # 查看xticklabel对象的所有方法属性
    xtl = ax.get_xticklabels()[0]
    xtl.*?
    
  3. 查看某方法的具体帮助文档

    # 查看ax.plot()的帮助文档
    ax.plot?
    # **kwargs具体参数查询,举个例子,查询ax.set_title()都有哪些参数?
    # 如下查询,只能看到几个参数: label, fontdict, loc, pad, **kwargs
    ax.set_title?
    # 那**kwargs中到底有哪些参数呢?仔细看**kwargs的描述:
    # **kwargs : `~matplotlib.text.Text` properties
    #    Other keyword arguments are text properties, see
    #    :class:`~matplotlib.text.Text` for a list of valid text
    #    properties.
    # 所以,**kwargs的具体参数要从Text类中找
    matplotlib.text.Text?
    
  4. 官网查询

    # 除了在ipython中查询外,也可以在官网查询,同样方便
    https://matplotlib.org/stable/py-modindex.html
    

掌握了以上方法,matplotlib几乎就没有什么神秘之处了。

武功秘籍

这节不太想讲,只要掌握了本门的内功心法,各秘籍一看就通,如:

  • 线图:ax.plot()
  • 散点图:ax.scatter()
  • 柱状图:ax.bar()
  • 饼图:ax.pie()
  • 直方图:ax.hist()

本门具体有多少秘籍,本人也不知,道友可自行去藏书阁一观。藏书阁传送门

当然,演武场还有教习,道友可以先看看效果威力,再决定跟谁学,学什么。演武场传送门

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值