有没有办法逐步绘制极坐标热图?

时间:2019-05-04 17:19:00

标签: python matplotlib polar-coordinates

我正在尝试使极热图逐渐出现。我希望通过向现有地块添加一个增量器来增加地块。始终使用相同的最大半径。

现在我也重新绘制旧数据,但这仅仅是因为我不知道如何添加到现有图中。

如何将新角度的z值添加到现有的热图?

这里接受的答案显示了如何绘制极坐标热图: Polar heatmaps in python

在下面的代码中,根据r和th计算z值。但是我的情况是我改为从文件中读取值。 如何将它们添加到热图?

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 :(得分:0)

您可以通过查看plotax.lines检索数据。像plt.plot(azm, r, color='k', ls='none', gid="a custom name")一样在曲线上添加一个“ gid”,然后我们要做一些工作:

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)坐标来添加单个新点。