Python系列之Matplotlib-绘制密度散点图

这篇文章记录了使用Pythonmatplotlib给散点图添加点的分布密度的方法。

背景

散点图是展示两个变量之间关系的非常有效的方式,理想情况是两个变量之间的均匀的,沿着其具有相关性的方向均匀分布,但是也存在一些例外,比如大部分的点都聚集在相关性方向的某一部分,这样的话对展示效果就会大打折扣,为了解决这个问题,可以给散点图添加一个颜色,而这个颜色就是局部点的分布密度,这种图就是密度散点图。


普通散点图

1
2
3
4
5
6
7
8
9
10
11
import numpy as np
import matplotlib.pyplot as plt

# Generate fake data
x = np.random.normal(size=1000)
y = x * 3 + np.random.normal(size=1000)

fig, ax = plt.subplots()
# s表示点的大小
ax.scatter(x, y, s=100, edgecolor='')
plt.show()

density_scatter_raw.png


密度散点图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
import matplotlib.pyplot as plt
# 导入计算概率密度的函数
from scipy.stats import gaussian_kde

x = np.random.normal(size=1000)
y = x * 3 + np.random.normal(size=1000)

# 计算概率密度
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)

fig, ax = plt.subplots()
# 使用概率密度来对点进行染色
ax.scatter(x, y, c=z, s=100, edgecolor='')
plt.show()

注意:

  • 这里的一定要是参数c,而不是使用参数color

density_scatter_final.png

参考链接



-----本文结束感谢您的阅读-----

本文标题:Python系列之Matplotlib-绘制密度散点图

文章作者:showteeth

发布时间:2020年04月24日 - 16:03

最后更新:2020年05月21日 - 23:15

原始链接:http://showteeth.tech/posts/24328.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%