Я преподаю интеграцию в полярных координатах. Чтобы ввести его в декартовых координатах, я использовал bar3d
, чтобы продемонстрировать, как уточнение в одном направлении, а затем в другом производит интегралы из сумм Римана.
Теперь я хочу сделать это в полярных координатах. Я не могу найти способ сделать это. Я могу найти способы построения поверхностей в 3d с помощью полярных координат с плавной интерполяцией (https://matplotlib.org/3.1.1/gallery/mplot3d/surface3d_radial.html), но я хочу показать столбцы, которые являются постоянными по каждому элементу поверхности, где я контролирую ширину стержня ,
Вот код, который делает бары в декартовой. Я хотел бы построить ту же функцию (x ^ 2 + y ^ 2) в полярной форме:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax1 = plt.axes(projection='3d')
Nx=5
Ny=20
# fake data
xm = 2
ym=1
_x = np.linspace(0,xm*(1-1/Nx), Nx)
_y = np.linspace(0,ym*(1-1/Ny), Ny)
_xx, _yy = np.meshgrid(_x, _y)
x, y = _xx.ravel(), _yy.ravel()
top = x*x + y*y
bottom = np.zeros_like(top)
width = xm/Nx
depth = ym/Ny
ax1.bar3d(x, y, bottom, width, depth, top, shade=True)
ax1.set_title('$x^2+y^2$')
#ax1.xlabel('$x$')
#ax1.ylabel('$y$')
#ax2.bar3d(x, y, bottom, width, depth, top, shade=False)
#ax2.set_title('Not Shaded')
ax1.set_xlabel('$x$', fontsize=20)
ax1.set_ylabel('$y$', fontsize=20)
plt.show()