框架

matplotlib框架分为三层,上层可以调用下层

  • Scripting 脚本层
    • 用于可视化编程,pyplot模块提供一个与matplotlib打交到的接口,可以只通过调用pyplot模块的函数从而操作整个程序包来绘制图形
      • 操作或改动Figure对象
      • 大部分工作是处理样本文件的图形与坐标的生成
  • Artist 美工层
    • 图形中所有能看到的元素都属于Artist,即标题、轴标签、刻度等组成图形的所有元素都是Atrist对象的实例
      • Figure 指整个图形(包括所有的元素,比如标题、线等)
      • Axes 坐标系,数据的绘图区域
      • Axis 坐标轴,包含大小限制、刻度和刻度标签
      • 一个figure可以包含多个axes,但是一个axes只能属于一个figure
      • 一个axes可以包含多个axis
  • Backend 后端层
    • matplotlib的底层,实现了大量的抽象接口类,分配画图的资源
      • FigureCanvas对象实现了绘图区域这一概念
      • Renderer对象在FigureCanvas上绘图

基础绘图

image.png

折线图

点的坐标

  • 横坐标
  • 纵坐标 ```python from matplotlib import pyplot as plt

plt.figure()

x,y坐标个数一一对应

plt.plot([1,2,3,4,5,6,7], [12,13,14,15,13,12,13])

显示调用

plt.show()

  1. 修改图标大小
  2. ```python
  3. plt.figure(figsize=(20,8))

保存图片

  1. plt.savefig("test.png")

温度变化绘制

  1. 绘制面板和简单图形绘制 ```python

    生成fig

    plt.figure(figsize=(20,8))

准备数据

x = range(60) y = [random.uniform(15,18) for i in range(60) ] plt.plot(x,y, label=”上海”) plt.show()

  1. 2. 自定义x,y刻度以及中文显示
  2. 1. plt.xticks(x, **kwargs)
  3. 1. plt.yticks(y, **kwargs)
  4. ```python
  5. # 生成fig
  6. plt.figure(figsize=(20,8))
  7. # 准备数据
  8. x = range(60)
  9. y = [random.uniform(15,18) for i in range(60) ]
  10. plt.plot(x,y, label="上海")
  11. # 修改刻度值
  12. # 指定显示的x刻度的列表
  13. # 第一个参数:值
  14. # 第二个参数:指定跟第一个参数对应的中文
  15. x_ch = ["11点{}分"。format(i) for i in x]
  16. plt.xticks(x[::5], x_ch[::5])
  17. # y显示0-40
  18. y_ticks = range(40)
  19. plt.yticks(yticks[::5])
  20. plt.show()
  1. 增加标题、x轴y轴描述信息 ```python

    生成fig

    plt.figure(figsize=(20,8))

准备数据

x = range(60) y = [random.uniform(15,18) for i in range(60) ] plt.plot(x,y, label=”上海”)

修改刻度值

指定显示的x刻度的列表

第一个参数:值

第二个参数:指定跟第一个参数对应的中文

x_ch = [“11点{}分”。format(i) for i in x] plt.xticks(x[::5], x_ch[::5])

y显示0-40

y_ticks = range(40) plt.yticks(yticks[::5])

增加标题描述

plt.xlabel(“时间”) plt.ylabel(“温度”) plt.title(“上海11到12点之间的温度”)

plt.show()

  1. 4. 再添加一个城市的温度显示
  2. ```python
  3. # 生成fig
  4. plt.figure(figsize=(20,8))
  5. # 准备数据
  6. x = range(60)
  7. y_sh = [random.uniform(15,18) for i in range(60) ]
  8. plt.plot(x,y_sh, label="上海")
  9. # 北京温度,可以用plot多次画多个折线
  10. y_bj = [random.uniform(1,3) for i in range(60) ]
  11. plt.plot(x,y_bj, label="北京", color='r', linestyle='--')
  12. # 添加注释,显示注释位置
  13. plt.legend(loc='best')
  14. # 修改刻度值
  15. # 指定显示的x刻度的列表
  16. # 第一个参数:值
  17. # 第二个参数:指定跟第一个参数对应的中文
  18. x_ch = ["11点{}分"。format(i) for i in x]
  19. plt.xticks(x[::5], x_ch[::5])
  20. # y显示0-40
  21. y_ticks = range(40)
  22. plt.yticks(yticks[::5])
  23. # 增加标题描述
  24. plt.xlabel("时间")
  25. plt.ylabel("温度")
  26. plt.title("11到12点之间的温度")
  27. plt.show()

多个坐标系显示

plt.subplots(nrows=1, ncols=1, **fig_kw) 创建多个坐标系的图

return:

  • fig
  • ax ```python

    生成fig

    plt.figure(figsize=(20,8))

    fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(20, 8))

    准备数据

    x = range(60) y_sh = [random.uniform(15,18) for i in range(60) ]

    plt.plot(x,y_sh, label=”上海”)

ax[0].plot(x,y_sh, label=”上海”)

北京温度,可以用plot多次画多个折线

y_bj = [random.uniform(1,3) for i in range(60) ]

plt.plot(x,y_bj, label=”北京”, color=’r’, linestyle=’—‘)

ax[1].plot(x,y_bj, label=”北京”, color=’r’, linestyle=’—‘)

添加注释,显示注释位置

plt.legend(loc=’best’)

修改刻度值

指定显示的x刻度的列表

第一个参数:值

第二个参数:指定跟第一个参数对应的中文

x_ch = [“11点{}分”。format(i) for i in x]

plt.xticks(x[::5], x_ch[::5])

y显示0-40

y_ticks = range(40)

plt.yticks(yticks[::5])

ax[0].set_xticks(x[::5], x_ch[::5]) ax[1].set_xticks(x[::5], x_ch[::5]) ax[0].set_yticks(yticks[::5]) ax[1].set_yticks(yticks[::5])

增加标题描述

plt.xlabel(“时间”)

plt.ylabel(“温度”)

plt.title(“11到12点之间的温度”)

ax[0].set_title(“123”) ax[1].set_title(“456”)

ax[0].legend(loc=”best”) ax[1].legend(loc=”best”)

plt.show() ```