Python 如何在matplotlib中计算极坐标图密度
我正在尝试对我发布的图片1进行排序,以便最密集的点更清晰,指向我用于实现的答案的链接表明了我正在努力实现的目标 我的代码是:Python 如何在matplotlib中计算极坐标图密度,python,numpy,matplotlib,scipy,data-visualization,Python,Numpy,Matplotlib,Scipy,Data Visualization,我正在尝试对我发布的图片1进行排序,以便最密集的点更清晰,指向我用于实现的答案的链接表明了我正在努力实现的目标 我的代码是: # Calculate the point density: Saccade Orientation is an angle, Amplitude is supposed to be the Y value xy = np.vstack([saccade_orientation_PP, saccade_amplitude_PP]) z = gaussian_kde(xy
# Calculate the point density: Saccade Orientation is an angle, Amplitude is supposed to be the Y value
xy = np.vstack([saccade_orientation_PP, saccade_amplitude_PP])
z = gaussian_kde(xy)(xy)
# Sort the points by density, so that the densest points are plotted last
idx = z.argsort()
x, y, z = np.array(saccade_orientation_PP)[idx], np.array(saccade_amplitude_PP)[idx], z[idx]
ax1 = plt.subplot(121, polar=True)
ax1.scatter(saccade_orientation_PP, saccade_amplitude_PP, c=z, edgecolor='', alpha = 0.75)
如果我不使用两行按密度排序的代码(注释掉),这就是我得到的结果
这是实现排序时的结果
我正试图实现一个类似的目标,如链接中的答案所示,因此图1更清晰,但我不明白为什么在排序时会得到下面的第二张图
谢谢。这里的关键问题是极坐标的使用 密度必须在xy笛卡尔坐标上计算,使用极坐标会导致奇怪的距离值,请尝试在矩形图中绘制数据,然后将看到 可以在计算z值之前包含坐标变换。例如:
xy = np.vstack([np.sin(angle)*amp, np.cos(angle)*amp])
z = gaussian_kde(xy)(xy)
这里的关键问题是极坐标的使用 密度必须在xy笛卡尔坐标上计算,使用极坐标会导致奇怪的距离值,请尝试在矩形图中绘制数据,然后将看到 可以在计算z值之前包含坐标变换。例如:
xy = np.vstack([np.sin(angle)*amp, np.cos(angle)*amp])
z = gaussian_kde(xy)(xy)
谢谢您的回复,amp变量代表什么?第二个值“扫视振幅”是坐标,而方向是半径角,所以我很难从逻辑上理解转换,即xy=np.vstack([np.sin(扫视方向),np.cos(扫视振幅),PP)])是错误的np.vstack([np.sin(扫视方向)*扫视振幅,np sin(扫视方向)*扫视(振幅)是你的例子中的变换谢谢你的回答,amp变量代表什么?第二个值“扫视振幅”是坐标,而方向是半径角,所以我很难从逻辑上理解转换,即xy=np.vstack([np.sin(扫视方向),np.cos(扫视振幅),PP)])是错误的np.vstack([np.sin(扫视方向)*扫视振幅,np sin(扫视方向)*在您的示例中,扫视(振幅(PP))是变换