螺旋波 2D 极地热图 pcolormesh

问题描述 投票:0回答:0

我想在极坐标(硬编码函数)中正确绘制螺旋波的热图。螺旋线相当于对数螺旋线。出现问题是因为螺旋不是极角的周期函数,我们使用的是网格,而不是简单的二维线。我想保留螺旋的内部部分,例如从 -2pi 到 4pi,它总是被最后一个 2*pi 间隔覆盖。

像黄金螺旋一样,是不是不可避免要简单地用多个相似的部分拼凑整个图案?下面是最小的工作示例。

也见图片

1

import numpy as np
import matplotlib.pyplot as plt

G = 6.674E-11 
pc = 3.0857E16 
year = 365.2422*24*3600

def velmap(r, phi, x0, x1, x2, x3):
    A = 2*np.pi*G*pc*1e-3
    B = year/pc
    C = 1e3/(2*np.pi*G*pc)
    v = np.sqrt(0.5*(x0*r)**2 + np.divide(A*x1*x2*r, 
                                          np.cosh((B*x3 + 2**-0.5*phi/x0)*x0*x2 - C*(x0**2*x2/x1*r))))
    return v

popt = [9.18905547e+00, 1.40100594e-01, 3.20514383e+00, 3.94920210e+07]

nmap=200
r_plot = np.linspace(0, 200, nmap)
phi_plot = np.linspace(-2*np.pi, 4*np.pi, nmap)

r_grid, phi_grid = np.meshgrid(r_plot, phi_plot)
v_grid = velmap(r_grid, phi_grid, *popt)

print(popt)

plt.subplot(projection="polar")
plt.pcolormesh(phi_grid, r_grid, v_grid, shading='auto')
plt.colorbar()
plt.plot(phi_plot, r_plot, color='k', ls='none') 
plt.show()

我不确定如何正确应用颜色图,欢迎提出任何想法。

matplotlib heatmap polar-coordinates spiral
© www.soinside.com 2019 - 2024. All rights reserved.