python畫密度散點圖


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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM