Есть ли способ постепенного построения полярной тепловой карты? - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь, чтобы полярная тепловая карта появлялась постепенно.Я хочу, чтобы сюжет рос, добавляя дельтасектор к существующему графику.Всегда используется один и тот же максимальный радиус.

На данный момент я также перенесу старые данные, но это только потому, что я не знаю, как добавить к существующему графику.

Как мнедобавить значения z для нового угла к существующей тепловой карте?

В принятом здесь ответе показано, как построить полярную тепловую карту: полярные тепловые карты в python

в кодениже значения z вычисляются как функция r и th.Моя ситуация, однако, что вместо этого я читаю значения из файла.Как бы я добавил их в карту тепла?

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

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

angle = 0
rad = np.linspace(0, 5, 100)

d_angle = np.pi/100

while angle < np.pi:
    azm = np.linspace(0, angle, 100)
    r, th = np.meshgrid(rad, azm)
    z = r/5

    plt.subplot(projection="polar")

    plt.pcolormesh(th, r, z)

    plt.plot(azm, r, color='k', ls='none') 
    plt.grid()
    plt.ion()
    plt.show()
    plt.pause(0.0001)
    plt.clf()
    angle += d_angle

Я не знаю, с чего начать.Есть ссылки на документы?Или другие советы?

1 Ответ

0 голосов
/ 04 мая 2019

Вы можете извлечь данные из plot, посмотрев на ax.lines. Добавьте «gid» к вашей кривой, например, plt.plot(azm, r, color='k', ls='none', gid="a custom name"), тогда у нас есть небольшая работа:

def append_data_to_curve(ax, gid):
    for line in ax.lines: # Check every curve.
        if line.get_gid() == "a custom name": # If the one you seek is found:
            X = line.get_xdata() # Get its X and Y data.
            Y = line.get_ydata()
            X.append(x) # Add the new point (x,y) you want.
            Y.append(y)
            line.set_xdata(X) # Put back the modified list as curve data.
            line.set_ydata(Y)

Вы можете вызывать эту функцию для каждой итерации цикла и добавлять одну новую точку, задавая ее (x, y) координаты.

...