Как нарисовать гистограмму в полярных координатах - PullRequest
0 голосов
/ 02 мая 2020

Я преподаю интеграцию в полярных координатах. Чтобы ввести его в декартовых координатах, я использовал 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()

enter image description here

...