Как отобразить несколько графиков тепловых карт на одном радиолокационном графике в python? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть три распределения данных:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm

a = np.load('A.npy')
b = np.load('B.npy')
c = np.load('C.npy')
plt.figure(figsize=(12,4))
plt.subplot(131)
plt.hist2d(a,b,bins=300,norm=LogNorm())
plt.xlabel('A')
plt.ylabel('B')
plt.subplot(132)
plt.hist2d(a,c,bins=300,norm=LogNorm())
plt.xlabel('A')
plt.ylabel('C')
plt.subplot(133)
plt.hist2d(b,c,bins=300,norm=LogNorm())
plt.xlabel('B')
plt.ylabel('C')
plt.show()

И вот результат: enter image description here

Теперь я хочу представить все три графика наРадарный сюжет выглядит примерно так:

Есть идеи?

1 Ответ

1 голос
/ 13 мая 2019

Во-первых, самая простая часть, построение графиков: я использовал 3 раза одни и те же случайные данные, сжимался (0..2pi -> 0..2 / 3pi) и сдвигался (0, 2 / 3pi, 4 / 3pi) ) чтобы получить 3 больших части пиццы:

import numpy as np
import matplotlib.pyplot as plt

parts = 3
ax = plt.subplot(111, polar=True)
shrink = 1./parts

for i in range(3):
    # beginning and end angle of this part
    start = i * 2/parts * np.pi
    end = (i + 1) * 2/parts * np.pi

    # Generate random data:
    N = 10000
    r = .5 + np.random.normal(size=N, scale=.2)
    theta = (np.pi / 2 + np.random.normal(size=N, scale=.1))

    # shift the data counterclockwise so that it fills the n-th part
    theta += i * 2.*np.pi / parts

    # Histogramming
    nr = 50
    ntheta = 200
    r_edges = np.linspace(0, 1, nr + 1)
    theta_edges = np.linspace(start, end, ntheta + 1)
    H, _, _ = np.histogram2d(r, theta, [r_edges, theta_edges])

    # Plot
    Theta, R = np.meshgrid(theta_edges, r_edges)
    ax.pcolormesh(Theta, R, H)

plt.show()

enter image description here

Теперь самая сложная часть: вам все равно придется преобразовывать ваши точки в радиальные значения, я не уверен, как вы определите это для своих координат, так как точка имеет 3 измерения, но вы хотите отобразить на 2d. Надеюсь, это поможет!

Мой код основан на этой 2-й карте тепла .

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