我是 python 和库 matplotlib 的新手,我试图在我的情节中获得我的函数线下方的区域。我有一个变量 a
& b
可以在我的图中移动一个矩形。我可能可以使用原始数学来解决这个问题,但我想知道是否有一种更简单的方法来实现我想要用 matplotlib 做的事情。
我的情节是这样的
我想得到这个区域的面积
如果还有一种简单的方法可以为该区域着色,我也想听听。
这是我显示此图的代码:
plt.clf()
plt.draw()
plt.axis(xmin = 0, xmax = 80, ymin = 0, ymax = 5)
plt.plot(-np.cbrt(np.power(t, 2) - 16 * t + 63) +4)
currentAxis = plt.gca()
line = currentAxis.lines[0]
for x, y in zip(line.get_xdata(), line.get_ydata()):
if x == 0 or y == 0:
if b > a:
currentAxis.add_patch(patches.Rectangle(((a * 80 / 11), y), (b * 80 / 11) - (a * 80 / 11), 5, fill=False))
else:
currentAxis.add_patch(patches.Rectangle((-(b * 80 / 11) + 80, y), -(a * 80 / 11) + (b * 80 / 11), 5, fill=False))
plt.show()
感谢您的帮助,抱歉没有嵌入图像。
最佳答案
Scipy can calculate integrals for you ,这似乎是获得所需内容的最简单方法。我认为你的
但是,图片和您的功能彼此不一致。这是我绘制您的函数复制/粘贴的内容:
t = pd.Series(range(0,80))
plt.plot(-np.cbrt(np.power(t, 2) - 16 * t + 63) +4)
无论如何,这里是如何获得积分,给定一个函数和积分界限。
import scipy.integrate as integrate
# define components for integral calculation
lower_bound = 22
upper_bound = 36
f = lambda t: -np.cbrt(np.power(t, 2) - 16 * t + 63) +4
# calculate integral
integral, error = integrate.quad(f, lower_bound, upper_bound)
print(integral)
关于python - 如何在matplotlib中找到函数下方的区域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43991885/