python之matplotlib (1 介绍及基本用法)

介绍

matplotlib是Python中的一个绘图库,它提供了一个类似于 MATLAB 的绘图系统。使用matplotlib你可以生成图表、直方图、功率谱、条形图、错误图、散点图等。matplotlib广泛用于数据可视化领域,是 Python 中最著名的绘图库之一。

同样matplotlib的安装也和numpy和pandas一样,具体语言如下:(在电脑终端执行)

python 复制代码
python -m pip install --user matplotlib

基本用法

利用matplotlib绘图方法很多,网上的方法也是各种各样,起初我看到这些方法很头疼,并不明白为何这样画。其实,对于各种绘图方法来说,只需掌握其内在的逻辑你就会明白不同方法的内涵。

我总结了网上绘图常见的四种方法,如下:

python 复制代码
import matplotlib.pyplot as plt

x=[1,4,9,16,25]

#第一种方法
plt.figure()
plt.plot(x)

#第二种方法
fig=plt.figure()
ax=plt.gca()
ax.plot(x)

#第三种方法
fig=plt.figure()
ax=fig.add_axes([0.1,0.1,0.7,0.7])
ax.plot(x)

#第四种方法
fig,ax=plt.subplots()
ax.plot(x)

plt.show()

这四种方法起到的作用大致上是相通的。

第一种方法:plt.figure()是起到了开辟一个窗口的作用,这个窗口里面什么都没有,仅仅是一个窗口。plt.plot()是在这个窗口中进行画图,在画图之前系统**默认给它分配了(即默认创建)**一个二维坐标轴平面,这个图像最终在这个坐标轴中呈现。

第二种方法:同样,plt.figure()开辟了一个窗口,同时将这个窗口赋给了变量fig。plt.gca()(get current axes)的作用是在当前的窗口中捕捉坐标轴平面,将这个坐标轴平面赋给变量ax。(如果当前窗口中没有,那就建立一个新的)然后在ax中进行作图,即ax.plot()

第三种方法:第三种方法和第二种方法很相似,ax=fig.add_axes([ ])的作用就是创建一个坐标轴,第一种方法在这里是省掉了,系统默认创建了一个,第二种虽说是多了一句但是是捕捉坐标轴,因为本身就没有所以归根结底还是创建了一个,这种方法就是明着说要创建一个坐标轴。

第四种方法:这个方法比较简单省事,一句话干了两句话的事。plt.subplots()是建立了一个窗口,而此窗口并未简单的彼窗口,subplots可以在这个窗口中布置子图的格局,换句话说如果你想在一个窗口中画多个子图,每个子图既独立存在又互不干扰,它就能实现这个功能。但在这里,我们并未指定它的参数,所以它默认是创建了一个子图,即整个窗口就画一个图。那么它的返回值fig指的是整个窗口,ax是所有的子图的坐标轴平面体系。因为你只创建了一个,所以ax在这里就是一个坐标轴平面,ax.plot()也就是在这仅有的一个坐标轴平面内画图。

归根结底,在matplotlib中画图可以分为四部分:1.创建窗口 2.创建坐标轴 3.画图 4.修剪

如果subplots多个子图,见下:

python 复制代码
import matplotlib.pyplot as plt

x=[1,4,9,16,25]

fig,ax=plt.subplots(2,2)
ax[0,0].plot(x)
plt.show()

我们建立了一个2×2布局的窗口,这个窗口是fig,而里面的每一个坐标轴平面是ax,我们在ax的第一个坐标轴中画图即:ax[0,0].plot(x)

相关推荐
懒羊羊不进村6 分钟前
Python深度学习基础——深度神经网络(DNN)(PyTorch)
python·深度学习·dnn
owde7 分钟前
深入 C++ 线程库:从创建到同步的探索之旅
开发语言·c++·thread·lock
凌冰_7 分钟前
Java Collections 类中常用方法使用
java·开发语言
jz_ddk10 分钟前
[实战]多天线空域抗干扰技术:原理、数学推导与工程仿真(完整仿真代码)
python·算法·毕业设计·信号处理
T0uken37 分钟前
【C++】信号槽与事件总线的轻量实现
开发语言·c++
du fei43 分钟前
C# 串口通信
开发语言·c#
船长@Quant1 小时前
VectorBT量化入门系列:第三章 VectorBT策略回测基础
python·量化策略·sklearn·ta-lib·量化回测·vectorbt
Spring-wind1 小时前
【golang】堆和栈的区别
开发语言·golang
拖拉机1 小时前
Python(三)操作列表
后端·python
java奋斗者1 小时前
基于Java的人脸识别在线考试系统(jsp+springboot+mysql8.x)
java·开发语言·spring boot