一、简单案例

Matplotlib的图像是画在figure,每一个figure又包含了一个或多个axes(axes可用于指定绘图的子区域)

import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
import numpy as np

(1)直接画

默认会构建一个figure,上面只有一个axes

plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.show()

(2)主动画一个figure,上面画个axes

效果和默认画图一样,但是可以指定画板figure大小

#fig = plt.figure()
fig = plt.figure(figsize=(6,3))  # 自定义画板figure大小
#ax = plt.subplots()  # 创建一个包含一个axes的figure
ax = fig.subplots()  # 该写法和上面一个结果一样
# fig, ax = plt.subplots() #也可以fig和axes一起写,结果一样
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]);  # 绘制图像
# plt.show()

Trick: 在jupyter notebook中使用matplotlib时会发现,代码运行后自动打印出类似<matplotlib.lines.Line2D at 0x23155916dc0>这样一段话,这是因为matplotlib的绘图代码默认打印出最后一个对象。如果不想显示这句话,有以下三种方法

①在代码块最后加一个分号“;”

②在代码块最后加一句plt.show()

③在绘图时将绘图对象显式赋值给一个变量,如将plt.plot([1, 2, 3, 4]) 改成line =plt.plot([1, 2, 3, 4])

line =plt.plot([1, 2, 3, 4], [1, 4, 2, 3])

二、matplitlib的figure组成

完整的matplotlib图像可以分为四个层级,分别是:

①Figure:顶层级,用来容纳所有绘图元素

②Axes:matplotlib核心,可以看做是子图的容器,一个figure可以由一个或多个子图组成

③Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素

④Tick:axis的下属层级,用来处理所有和刻度有关的元素

三、两种绘图接口

matplotlib提供了两种最常用的绘图接口:

① 显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)

② 依赖pyplot自动创建figure和axes,并绘图

(1)使用第一种方式绘图

先介绍下np.linspace这个函数

在指定数据范围内,以均匀步长生成指定数量的数,包含收尾数字

# 在[0,10]之间以均匀步长生产5个数字
s = np.linspace(0,10,5)
print(s)
plt.scatter([1]*len(s), s)
[ 0.   2.5  5.   7.5 10. ]<matplotlib.collections.PathCollection at 0x248f33725b0>

X = np.linspace(0, 2, 100)  # 在[0,2]之间生成100个均匀步长的数据
X
array([0.        , 0.02020202, 0.04040404, 0.06060606, 0.08080808,0.1010101 , 0.12121212, 0.14141414, 0.16161616, 0.18181818,0.2020202 , 0.22222222, 0.24242424, 0.26262626, 0.28282828,0.3030303 , 0.32323232, 0.34343434, 0.36363636, 0.38383838,0.4040404 , 0.42424242, 0.44444444, 0.46464646, 0.48484848,0.50505051, 0.52525253, 0.54545455, 0.56565657, 0.58585859,0.60606061, 0.62626263, 0.64646465, 0.66666667, 0.68686869,0.70707071, 0.72727273, 0.74747475, 0.76767677, 0.78787879,0.80808081, 0.82828283, 0.84848485, 0.86868687, 0.88888889,0.90909091, 0.92929293, 0.94949495, 0.96969697, 0.98989899,1.01010101, 1.03030303, 1.05050505, 1.07070707, 1.09090909,1.11111111, 1.13131313, 1.15151515, 1.17171717, 1.19191919,1.21212121, 1.23232323, 1.25252525, 1.27272727, 1.29292929,1.31313131, 1.33333333, 1.35353535, 1.37373737, 1.39393939,1.41414141, 1.43434343, 1.45454545, 1.47474747, 1.49494949,1.51515152, 1.53535354, 1.55555556, 1.57575758, 1.5959596 ,1.61616162, 1.63636364, 1.65656566, 1.67676768, 1.6969697 ,1.71717172, 1.73737374, 1.75757576, 1.77777778, 1.7979798 ,1.81818182, 1.83838384, 1.85858586, 1.87878788, 1.8989899 ,1.91919192, 1.93939394, 1.95959596, 1.97979798, 2.        ])
fig, ax = plt.subplots()
ax.plot(X, X, label='linear')
ax.plot(X, X**2, label='quadratic')
ax.plot(X, X**3, label='cubic')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
plt.show()

(2)使用第二种方式绘图

X = np.linspace(0, 2, 100)plt.plot(X, X, label='linear')
plt.plot(X, X**2, label='quadratic')
plt.plot(X, X**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()

四、通用绘图模板

matplotlib的知识点比较繁杂,不可能全部记住,实际应用时随用随查,因此这里提供一个通用的绘图基础模板,后续再基于这个图表进行填充优化

# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2# step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像是进行设置
# mpl.rc('lines', linewidth=4, linestyle='-.')# step3 定义布局, 这一模块的扩展参考第三章进一步学习
fig, ax = plt.subplots()  # step4 绘制图像, 这一模块的扩展参考第二章进一步学习
ax.plot(x, y, label='linear')  # step5 添加标签,文字和图例,这一模块的扩展参考第四章进一步学习
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend() ;

五、思考

  1. 请思考两种绘图模式的优缺点和各自适合的使用场景

(1)显式创建figure和axes,适用于需要绘制多个图,调整子图格式的情况,比较方便,但是对于绘制一个图的时候,比较麻烦,还需要多写一些代码
(2)依赖pyplot自动创建figure和axes,不方便调整子图格式以及子图间距

  1. 在上一绘图模板中我们是以OO模式作为例子展示的,请思考并写一个pyplot绘图模式的简单模板
# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2# step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像是进行设置
# mpl.rc('lines', linewidth=4, linestyle='-.')# step3 定义布局, 这一模块的扩展参考第三章进一步学习
fig = plt.figure
ax = plt.subplots()# step4 绘制图像, 这一模块的扩展参考第二章进一步学习
plt.plot(x, y, label='linear')  # step5 添加标签,文字和图例,这一模块的扩展参考第四章进一步学习
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend() ;


01 熟悉python绘图工具——matplotlib相关推荐

  1. Python 绘图框架 MatplotLib 笔记(一)

    MatplotLib 是一套类似MatLab的 Python 绘图工具. 一.线形图 常用库函数 import matplotlib.pyplot as plt matplotlib 对中文支持不是很 ...

  2. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)

    Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...

  3. python绘图使用matplotlib色卡

    python绘图使用matplotlib色卡 python绘图一般使用两个库,matplotlib和seaborn 这两个库的色卡不同,使用起来经常迷惑,特此总结: matplotlib具有以下经典色 ...

  4. 海龟编程 python绘图工具turtle库的用法 turtle库使用方法大全,画笔设置 画布设置 绘图设置,画笔粗细,画笔颜色, 画笔速度。Python二级必须会的命令(已获取证书)

    目录 海龟编程 python绘图工具turtle库的用法 画布: 画笔 画笔运动命令: 画笔的控制命令: 全局控制命令: 简单turtle绘图示例: 圆中方: 三色同心圆: 四个圆中方: 螺旋正方: ...

  5. Python绘图神器Matplotlib、Echarts、Pyecharts 和 Plotly ——可绘制各种图

    Python绘图神器Matplotlib和Echarts Matplotlib官网 https://matplotlib.org/stable/tutorials/toolkits/mplot3d.h ...

  6. python数据整理--绘图工具matplotlib

    1. matplotlib是一种python底层的绘图工具. 我们可以将爬虫爬取的数据,来进行分析绘制成更直观的图像,便于分析与整理. 2. matplotlib的基本要点: (1). 如何设置图片的 ...

  7. Python可视化工具Matplotlib 3.0版出炉,改进默认后端选择,饼图终于变圆了

    李林 编译整理 量子位 出品 | 公众号 QbitAI Matplotlib 3.0来了!新版Matplotlib已能通过PyPI安装了,不过,这一版本只支持python 3,Python 2死忠还得 ...

  8. python可视化工具:matplotlib+pyecharts使用详解

    准备 一.matplotlib快速入门 二.matplotlib进阶–绘制常见的图表 1.绘制折线图 2.绘制柱状图 3.绘制条形图 4.绘制直方图 5.绘制饼状图 6.绘制散点图 7.绘制堆叠图 三 ...

  9. Python绘图总结(Matplotlib篇)

    Matplotlib绘图知识点集锦 1.1基础知识篇 绘图背景网格设置 坐标轴颜色.标题大小的设置 ax.tick_params(axis='both',labelcolor='r', labelsi ...

最新文章

  1. 【跟着我们学Golang】之异常处理
  2. GetWindowRect和GetClientRect(得到窗口坐标)
  3. rfc3095中文版_RFC3095
  4. 解决Ubuntu IDEA 不能输入中文
  5. 营销大数据分析 关键技术_营销分析的3个最关键技能
  6. Leetcode每日一题:649.dota2-senate(Dota2参议院)
  7. Sklearn之datasets和训练
  8. 手机浏览器和pc浏览器下载文件方法
  9. vbox虚拟机和vm虚拟机 虚拟机网络不通的解决方法
  10. 鲁大师12月新机性能/流畅榜:小米系包揽性能榜前三,流畅榜上限再突破!
  11. 基于51单片机的万年历(带温湿度)带闹钟功能proteus仿真原理图PCB
  12. [maven] maven
  13. 支持图灵架构和安培架构的TensorFlow Python库
  14. n维椭球体积公式_2020中考物理知识汇总:公式大全
  15. 【Java杂货铺】JVM#Java高墙之内存模型
  16. 苹果手机有便签吗?苹果手机便签下载
  17. 四个步骤实现在ESRI ArcMap中加载17.6G离线卫星地图的方法
  18. 展厅安装摄像头优化问题
  19. ios自动化-Xcode、WebDriverAgent环境部署
  20. 【Arduino计时器】Arduino计时器使用TM1637显示时间

热门文章

  1. 【逻辑思维】马粪争夺案
  2. 成像声呐ARIS介绍及操作指南
  3. 抖音视频解析的工具类
  4. 移动端车牌识别哪家好
  5. JS模块化 + 打包工具webpack5
  6. L1-070 吃火锅 (15 分)
  7. 把python文件转exe文件 和 打包报错处理
  8. H5微信网页开发总结(授权,分享,地图)
  9. 解决Oracle表中数据中文显示乱码问题
  10. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)