график на псевдоцветном графике от полярных до декартовых координат - PullRequest
1 голос
/ 28 мая 2020

У меня есть полярная (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 полярных координат. Кажется, именно этот отрывок вызывает у меня некоторые проблемы с векторным полем.

Спасибо за любые предложения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...