在极热图中以3个半径绘制一维数组

时间:2019-02-26 17:32:32

标签: python numpy matplotlib heatmap polar-coordinates

我有3个1D数组:半径,角度和温度。它们一起形成环的二维温度图。 数组采用以下形式:

r = [0,0,0,1,1,1,2,2,2]
th = [0.,0.78539816,1.57079633,2.35619449,3.14159265,3.92699082,4.71238898,5.49778714,6.28318531]
z = [-1,2,5,2,4,-1,3,2,3]

我不知道如何使这些z数据落在正确的坐标上。

我可以使用以下简单代码使用随机数来使其工作:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = Axes3D(fig)

rad = np.linspace(.2, 1, 4)
azm = np.linspace(0, 2 * np.pi, 9)
r, th = np.meshgrid(rad, azm)
z = np.random.rand(9,4) ** th * r
ax0 = plt.subplot(projection="polar")
im = plt.pcolormesh(th, r, z, cmap='bwr')
plt.plot(azm, r, color='k', ls='none')
plt.axis('off')
cbar = fig.colorbar(im)
ax0.set_title('3 radii polar heat map')

This is how my example code comes out

1 个答案:

答案 0 :(得分:0)

我结束了将列表z分成3个列表,并使用z_mat = np.array([z1,z2,z3])从它们中组成一个矩阵。我注意radazm的列表中包含的项目多于z,这是pcolormesh的要求。之后,我使用r

将矩阵转置为与thz_mat_trans = z_mat.transpose()相同的维度