python_matplotlib DAY_21(3)面向对象画图plt.figure()

学习内容
初识面向对象的画图方式
重点
常见作图方式有三种,pyplot,pylab,以及面向对象型
pyplot底层制作能力不足,使用简单
pylab完全封装MAtlab,但不推荐使用
面向对象是Matplotlib的精髓,但是难度大,定制能力强
在下面我编写一个面向对象的画图方式,作出正弦图像

1.做出一副正选图像

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

x=np.linspace(-2*np.pi,2*np.pi,100)#画图所需的X变量
y=np.sin(x)#画图所需的Y变量

fig=plt.figure()
#创建画图所用的‘画图器’
#但是没有画图器这一说,我们只是抽象的将他比做成一个画图使用的纸张,
#显示图像的框架就是纸张的大小
ax=fig.add_subplot(3,3,2)
#我们可以划分画图区间,划分成3×3的画面,画图画在从左到右,在从上到下的第二个框内
t=ax.set_title('object oriented')
#设置名称
plt.title('pyplot')
#设置画像名称
plt.plot(x,y)
plt.show()

2.做到在一幅图上画多附图

x = np.linspace(-2 * np.pi, 2 * np.pi, 100)
y = np.sin(x)


fig=plt.figure()
ax1=fig.add_subplot(2,2,1)
ax1.plot(x,y)
ax2=fig.add_subplot(2,2,2)
ax2.plot(x,-y)
ax3=fig.add_subplot(2,2,3)
ax3.plot(x,y**2)
ax4=fig.add_subplot(2,2,4)
ax4.plot(x,2*y)
plt.show()

通过创建不同的网格ax来实现最后的显示
在这里插入图片描述

3.同时画多幅图,不在同一张图上显示

fig1 = plt.figure()
ax1 = fig1.add_subplot(2, 2, 1)
ax1.plot(x, y)
fig2 = plt.figure()
ax2 = fig2.add_subplot(2, 2, 2)
ax2.plot(x, -y)
fig3 = plt.figure()
ax3 = fig3.add_subplot(2, 2, 3)
ax3.plot(x, y ** 2)
fig4 = plt.figure()
ax4 = fig4.add_subplot(2, 2, 4)
ax4.plot(x, 2 * y)
plt.show()

在上面的代码基础上做了修改,我们创建了4个figure,同时显示
在这里插入图片描述
我们可以观察到,最后边同时出现了四幅图
综上我们就可以看出来,有多少fig=plt.figure()就会有几幅图
每个fig里面有多少不同的ax(坐标轴),在一幅图上就有多少子图,前提是自己分区域一定要合理

补充:我们在作图的时候显示网格图(grid指令)
这里介绍两种方法
1.plt.grid(True)指令

fig1 = plt.figure()
ax1 = fig1.add_subplot(1, 1, 1)
ax1.plot(x, y)
plt.grid(True)
plt.show()

在这里插入图片描述
2.在figure里面做网格
ax.grid()

fig1 = plt.figure()
ax1 = fig1.add_subplot(3, 1, 1)
ax1.plot(x, y)
ax1.grid(color='r',linewidth='2',linestyle="--")
ax2 = fig1.add_subplot(3, 1, 2)
ax2.plot(x, -y)
ax2.grid(color='b',linewidth='3',linestyle=":")
ax3 = fig1.add_subplot(3, 1, 3)
ax3.plot(x, 2*y)

plt.show()

在这里插入图片描述

发布了41 篇原创文章 · 获赞 1 · 访问量 896

猜你喜欢

转载自blog.csdn.net/soulproficiency/article/details/104106455