python - 如何使用 matplotlib 让散点变得更大以获得更高的密度?

标签 python pandas matplotlib visualization

我正在使用 matplotlib 绘制绘图。 x 和 y 轴是离散值,因此列表中的几个 (x,y) 点具有相同的值。例如,假设我们有以下 x,y 点:

x=[0,1,1,2,2,2,2,2]
y=[0,1,2,3,3,3,3,5]

现在所有的 (x,y) 点都出现一次,但 (2,3) 出现了 4 次。当我使用 plt.scatter(x,y) 时,它只显示 (2,3) 作为一个常规点,一次。如何也可以显示发生的密度?例如,更大的标记?

最佳答案

您可以传递一个可选参数 splt.scatter表示绘制的每个点的大小。要获得与每个点的出现次数相对应的大小,首先构建一个计算出现次数的字典,然后为每个点创建一个大小列表。

import matplotlib.pyplot as plt
from collections import Counter

x=[0,1,1,2,2,2,2,2]
y=[0,1,2,3,3,3,3,5]

# count the occurrences of each point
c = Counter(zip(x,y))
# create a list of the sizes, here multiplied by 10 for scale
s = [10*c[(xx,yy)] for xx,yy in zip(x,y)]

# plot it
plt.scatter(x, y, s=s)
plt.show()

enter image description here

关于python - 如何使用 matplotlib 让散点变得更大以获得更高的密度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46700733/

相关文章:

python - 将 pandas 数据框字符串条目拆分(分解)为单独的行

python - 如何在 matplotlib 中的一张图上绘制由不同日期但相同时间戳组成的时间序列

python - matplotlib 中图像网格上的两个颜色条

java - zeromq 与 Python 与 Java 的 node.js 性能

python - 如何从 PEM 文件加载 RSA key 并在 python-crypto 中使用它

python - 如何获取由 float 组成的范围列表?

Python matplotlib 图例如何减少帧左边缘和标记之间的距离

python - (.*js$) 和 .*(js)$ 有什么区别

python - 如何在 python 中使用生成器循环大型 Parquet 文件?

python - 忽略训练数据中不存在的测试特征