Построить массив 1D на 3 радиуса в полярной тепловой карте - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть 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')

Вот так получается мой пример кода

1 Ответ

0 голосов
/ 28 февраля 2019

Я закончил разделять список z на 3 списка и сделал из них матрицу, используя z_mat = np.array([z1,z2,z3]).Я позаботился о том, чтобы списки для rad и azm содержали на одну единицу больше, чем z, что является требованием для pcolormesh.После этого я транспонировал матрицу, чтобы иметь такие же размеры, как r и th, используя z_mat_trans = z_mat.transpose()

...