Python 从极坐标到笛卡尔坐标的伪彩色图上的流图

Python 从极坐标到笛卡尔坐标的伪彩色图上的流图,python,numpy,matplotlib,polar-coordinates,cartesian-coordinates,Python,Numpy,Matplotlib,Polar Coordinates,Cartesian Coordinates,我有一个极坐标(r,θ)网格(即每个单元是一个环形扇形)和物理变量的二维数组,这些变量的值在这样的网格中定义:标量场(密度)和向量场(b=(br,btheta))。 我想用笛卡尔坐标将这两个字段绘制成同一个图。特别是:我需要标量场的伪彩色图和笛卡尔网格中向量场的流图。 这是我的代码: ## first_step: density plot ## from polar to cartesian coordinates ## import numpy as np import matplotl

我有一个极坐标(r,θ)网格(即每个单元是一个环形扇形)和物理变量的二维数组,这些变量的值在这样的网格中定义:标量场(密度)和向量场(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之后构建笛卡尔网格。这篇文章似乎给了我一些关于向量场的问题

谢谢你的建议