python_matplotlib DAY_22(3) 简单作图实例:作出(3-x)(x+3)的积分图像,并做标注

学习内容
作出函数积分图像

实例:作出(3-x)(x+3)的积分图像,并做标注
在通过之前的学习,以及可以做基本的图像了,这篇博客通过一步一步分析的作图的整个过程,深入学习

1.首先创建图像,作出函数,标注需要的积分端点和参数

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mp

x = np.linspace(-3, 3)
y = -(x - 3) * (x + 3)#创建我们所需的函数
plt.style.use('grayscale')#背景填充
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
plt.plot(x, y, linewidth=3, color='R')#创建画布,并作出图像


a = -2
b = 1#这个是我们在x轴上需要积分的端点值
ax.set_xticks([a, b])
#这个语句的功能是,在X轴上只显示端点a,b其余坐标值去掉
ax.set_xticklabels(['$a$', '$b$'])#这个就是设置端点的名称
ax.set_yticks([])#可以为空,删去所有y轴坐标参数
plt.text(3.5, -1, s="x")#填充x轴的名字
plt.text(-3.5, 10, s="y")#填充y轴的名字


plt.grid(linestyle=":")
plt.show()

python_matplotlib DAY_22(3) 简单作图实例:作出(3-x)(x+3)的积分图像,并做标注_第1张图片
2.对所需的积分域进行填充
最初的想法是通过fill.betwee指令填充区域,但发现失败了
接着我打算填充全部,然后将剩余的部分填充成白色,这样也能达到目的,但也失败了
上述两种思想小伙伴可以实现后告诉我一下,方便我以后的学习

这时候我参考了别人的思想,通过patch填充一个图形
但是我需要获取所有的坐标,这个是关键

ix = np.linspace(a, b)
#截取a,b线段
iy = y = -(ix - 3) * (ix + 3)
#求得所有点的对应值
ixy = zip(ix, iy)
#将其合并成元组,即为坐标
set = [(a, 0)] + list(ixy) + [(b, 0)]
#覆盖上端点,得到做标记和
ploy = mp.Polygon(set, color="g", alpha=0.5)
#作出图像
ax.add_patch(ploy)
#增加到图像上


ax.set_ylim(bottom=0)
#因为上面第一步的图像我发现没有对其y=0,这一步设置图像的最低端坐标

python_matplotlib DAY_22(3) 简单作图实例:作出(3-x)(x+3)的积分图像,并做标注_第2张图片
3.血上数学公式,完成所有坐标注释

plt.text(-1, 4, r'$\int_a^b(-(x-3)(x+3)dx)$',horizontalalignment='left')
#填充公式

python_matplotlib DAY_22(3) 简单作图实例:作出(3-x)(x+3)的积分图像,并做标注_第3张图片

4.所有代码如下

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mp

x = np.linspace(-3, 3)
y = -(x - 3) * (x + 3)
plt.style.use('grayscale')
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
plt.plot(x, y, linewidth=3, color='R')
ax.set_ylim(bottom=0)
a = -2
b = 1
ax.set_xticks([a, b])
ax.set_xticklabels(['$a$', '$b$'])
ax.set_yticks([])
plt.text(3.5, -1, s="x")
plt.text(-3.5, 10, s="y")

ix = np.linspace(a, b)
iy = y = -(ix - 3) * (ix + 3)
ixy = zip(ix, iy)
set = [(a, 0)] + list(ixy) + [(b, 0)]
ploy = mp.Polygon(set, color="g", alpha=0.5)
ax.add_patch(ploy)

plt.text(-1, 4, r'$\int_a^b(-(x-3)(x+3)dx)$',horizontalalignment='left')

plt.grid(linestyle=":")
plt.show()

你可能感兴趣的:(python_matplotlib DAY_22(3) 简单作图实例:作出(3-x)(x+3)的积分图像,并做标注)