У меня есть полярная (r, theta) сетка (т.е. каждая ячейка является сектором кольца) и 2-мерные массивы физических переменных со значениями, определенными в такой сетке: скалярное поле (плотность) и векторное поле (b = (br, btheta)). Я хотел бы построить два поля на одном графике с декартовыми координатами. В частности: мне нужен псевдоцветный график скалярного поля с графиком векторного поля по сравнению с декартовой сеткой. Это мой код:
## first_step: density plot
## from polar to cartesian coordinates
##
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
R,Theta = np.meshgrid(r,theta)
x = R*np.sin(Theta)
y = R*np.cos(Theta)
plt.pcolormesh(x,y,density.transpose())
##
## second step: overplot the streamplot of a vector field
## form polar to cartesian coordinates
##
x,y = np.meshgrid(x,y)
r = np.sqrt(x*x+y*y)
th = np.arctan2(x,y)
s = np.sin(th)
c = np.cos(th)
bx = br*s+bth*c
by = br*c-bth*s
plt.streamplot(x,y,bx,by)
Псевдоцветный график плотности работает хорошо. Некоторые проблемы возникают при попытке наложить на график линии тока векторного поля. В частности, второй шаг будет работать хорошо только в том случае, если декартова сетка была построена в начале и независимо от полярной сетки, например:
x = np.linspace(x_beg,x_end,Nx)
y = np.linspace(y_beg, y_end,Ny)
x,y = np.meshgrid(x,y)
Но поскольку у меня есть полярная сетка, я могу построить только декартова сетка после использования np.meshgrid полярных координат. Кажется, именно этот отрывок вызывает у меня некоторые проблемы с векторным полем.
Спасибо за любые предложения!