我正在尝试对发布的图片1进行排序,以使最密集的点更清晰,我用于实现的答案链接表明了我正在尝试实现的目标。
How can I make a scatter plot colored by density in matplotlib?
我的代码是:
# 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清晰但无法理解,但为什么我对它进行排序后却得到下面的第二张图像。
谢谢。
答案 0 :(得分:1)
这里的关键问题是极坐标的使用。
必须在xy直角坐标上计算密度,极坐标的使用会产生奇怪的距离值,请尝试将数据绘制在矩形图中,然后将看到。
可以在计算z值之前包括坐标变换。例如:
xy = np.vstack([np.sin(angle)*amp, np.cos(angle)*amp])
z = gaussian_kde(xy)(xy)