【python】plt画图“标准流程” | figure,axes这些关系

文章目录

  • 前言
  • 一、首先搞懂plt,figure,axes这些概念
  • 二、“标准过程”
  • 三.一些需要注意的细枝末节的操作(坐标轴等等)


前言

就是说,每次在使用python里的plt画图的时候,总有部分代码不熟悉,比如画子图这些,然后在网上找的代码都有点不太一样,总感觉很深奥的,这次笔记就把这些画图的技巧从头到脚好好学习一下,也相当于是给数学建模里面画图做准备。

一、首先搞懂plt,figure,axes这些概念

以前用matlab用的比较多,里面画子图的时候直接:figure(1),subplot(121)这种,但是在python里调用的方式好像又不太一样了。
上网查找了资料,得到以下知识点:
1)figure相当于大画布,整个作图的大环境
2)axes相当于是小画布,一个figure上能有很多的axes(通过subplot 来设置他们的排列顺序)
3)经典问题:plt.plot和ax.plot的区别
相比于前者,后者相当于是线生产出figure 再生产出axes画了一个图。plt.plot()通过plt.gca()获得当前的Axes,再调用ax.plot()方法实现绘图(摘抄自网络:https://www.zhangjunbk.com/article/27082)。然这句话读起来确实有一些拗口,就这么说吧,真的要标准的画图,用ax.plot肯定是要标准一些的。 我称之其为《最标准的过程》(我自己定义的)

二、“标准过程”

那么这个标准过程是怎么弄的呢:

import matplotlib.pyplot as plt
fig,axes=plt.subplots(figsize = (10, 5))
plt.show()

【python】plt画图“标准流程” | figure,axes这些关系_第1张图片
这张图看起来好像是plt.plot差球不多
figsize 是指定大画布figure的长度
要是我想多画几个子图呢,可以在前面两个参数处进行设置,比如这里设置的是2排3列。

import matplotlib.pyplot as plt
fig,axes=plt.subplots(2,3,figsize = (10, 5))  #这个参数默认的情况下是1
plt.show()

【python】plt画图“标准流程” | figure,axes这些关系_第2张图片
这样axes其优势是不是进一步凸显出来了,貌似plt不能直接这样subplot吧(主要还是matlab用习惯了,)
然后后面的作图就按步就班了,该画啥就画啥。
比如我在第1,1个图片里画抛物线图,第2,2个图片里面画散点图

import matplotlib.pyplot as plt
import numpy as np
import random
x=np.arange(1,10,1)
y= x**2

Ix=[random.randrange(0,100) for i in range(100)]
Iy=[random.randrange(0,100) for i in range(100)]
fig,axes=plt.subplots(2,3,figsize = (10, 5))  #这个参数默认的情况下是1
axes[0][0].plot(x,y)
axes[1][1].scatter(Ix,Iy)
plt.show()

【python】plt画图“标准流程” | figure,axes这些关系_第3张图片

三.一些需要注意的细枝末节的操作(坐标轴等等)

添加坐标轴名称:

axes[0][0].set_xlabel('x') #设置横坐标名称

设置坐标轴范围:

axes[0][0].set_xlim(0,10) #设置坐标轴范围

设置标签:

axes[0][0].plot(x,y,label='抛物线')
axes[0][0].legend(loc='best')

总代码:

import matplotlib.pyplot as plt
import numpy as np
import random
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
x=np.arange(1,10,1)
y= x**2

Ix=[random.randrange(0,100) for i in range(100)]
Iy=[random.randrange(0,100) for i in range(100)]
fig,axes=plt.subplots(2,3,figsize = (15, 10))  #这个参数默认的情况下是1
axes[0][0].plot(x,y,label='抛物线')
axes[0][0].set_title('抛物线') #设置子图标题
axes[0][0].set_xlabel('x') #设置横坐标名称
axes[0][0].set_ylabel('y') #设置纵坐标名称
axes[0][0].legend(loc='best')
axes[0][0].set_xlim(0,10) #设置坐标轴范围

axes[1][1].scatter(Ix,Iy)
plt.show()

【python】plt画图“标准流程” | figure,axes这些关系_第4张图片
【python】plt画图“标准流程” | figure,axes这些关系_第5张图片
当然细枝末节肯定不止这一点,我只放了我个人觉得比较重要的。

你可能感兴趣的:(python学习,python,开发语言,matplotlib)