我对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()谢谢你的帮助,很抱歉没有嵌入图像。
发布于 2017-05-16 03:36:57
可以为您计算积分。,这似乎是获得您想要的东西的最简单的方法。我认为你的照片和你的功能不一致。下面是绘制您的函数复制/粘贴的方法:
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)-50.03118191324093
发布于 2017-05-16 03:49:32
由于Max Power对您问题的集成部分的回答是非常好的,我将只讨论绘制曲线下面/上面的区域的问题。您可以使用fill_between
import numpy as np
from matplotlib import pyplot as plt
def f(t):
return -np.cbrt(np.power(t, 2) - 16 * t + 63) +4
t = np.arange(0,80,1/40.)
plt.plot(t,f(t))
section = np.arange(22, 36, 1/20.)
plt.fill_between(section,f(section))
plt.axhline(0, color='k')
plt.axvline(0, color='k')
plt.show()

https://stackoverflow.com/questions/43991885
复制相似问题