1. 使用matplotlib.pyplot.scatter() 和 scipy.stats.gaussian_kde() 畫密度散點圖
1 import numpy as np 2 import matplotlib.pyplot as plt 3 from scipy.stats import gaussian_kde 4 from matplotlib.colors import LogNorm 5 6 # Generate fake data 7 x = np.random.normal(size=500) 8 y = x * 3 + np.random.normal(size=500) 9 10 # Calculate the point density 11 xy = np.vstack([x,y]) 12 z = gaussian_kde(xy)(xy) 13 14 # Sort the points by density, so that the densest points are plotted last 15 idx = z.argsort() 16 x, y, z = x[idx], y[idx], z[idx] 17 18 fig, ax = plt.subplots() 19 plt.scatter(x, y,c=z, s=20,cmap='Spectral') 20 plt.colorbar() 21 plt.show()
scatter中其他可使用的cmap,參考【https://matplotlib.org/tutorials/colors/colormaps.html】
colorbar反向在顏色名稱后面加’_r‘,比如:
1 fig, ax = plt.subplots() 2 plt.scatter(x, y,c=z, s=20,cmap='Spectral_r') 3 plt.colorbar() 4 plt.show()
【參考】:
https://www.imooc.com/wenda/detail/592142
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gaussian_kde.html#scipy.stats.gaussian_kde
其他可參考方法匯總:【2021-03-09】
高斯核函數計算核密度估計:https://blog.csdn.net/qq_39085138/article/details/107792246
Python-matplotlib 學術型散點圖繪制:https://my.oschina.net/u/4581316/blog/4617771
https://blog.csdn.net/tk20190411/article/details/105639233?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-3
匯總:https://izziswift.com/how-can-i-make-a-scatter-plot-colored-by-density-in-matplotlib/
https://pypi.org/project/mpl-scatter-density/