#numpy #matplotlib
#numpy #matplotlib
Вопрос:
У меня есть функция: z = f (x, y), и я рисую контурный график.
Например :
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
x=np.linspace(0,10,11)
y=np.linspace(0,10,11)
X,Y=np.meshgrid(x,y)
Z=(X 4)*(X-14)*(Y 6)*(Y-14)/1000
fig, ax =plt.subplots()
CS= ax.contour(x,x,Z,[7],colors='black')
ax.clabel(CS, inline=True, fontsize=10)
Из контурных точек данных контура ( CS.collections[0].get_paths()[0]
), как можно интегрировать z внутри этой области?
Спасибо за ответ.
Комментарии:
1. Это совершенно другой вопрос, чем ваш предыдущий, а также намного сложнее. IIUC, вы хотите рассчитать приблизительный объем с учетом 121 значения xyz, а затем ограничить его некоторым полигоном? Обратите внимание, что в общем случае может быть несколько полигонов с несколькими отверстиями. В любом случае,
contour
может помочь визуализировать вещи, но не кажется правильным подходом для выполнения вычислений.2. @JohanC. Мой предыдущий?
3. @JohanC; Каков правильный подход?
4. Ваш «базовый» метод звучит правильно для меня. Если вы хотите больше интерполяции, сначала выполните двухмерную интерполяцию и суммируйте по меньшему dx * dy. Я бы не стал использовать для этого вывод из contour.
5. Если вы просто хотите изотропную интерполяцию: interp2d: docs.scipy.org/doc/scipy/reference/generated /… Иногда также имеет смысл просто выполнить 1-d interp для столбцов, за которыми следуют строки.