matplotlib - 如何通过 matplotlib 标准化后获取各个点的值

标签 matplotlib normalization

以下代码在定义范围之间标准化数据后生成十六进制图。

from matplotlib.cm import viridis_r as glocmap
import numpy as np
import matplotlib.pyplot as plt

data = np.random.uniform(1.0, 10, size=(100,2))

ax1 plt.hexbin(data[:,0], data[:,1], bins=None,gridsize=(20,15), cmap=glocmap,
           vmin=0, vmax=100, alpha=0.75, mincnt=1.0)

cb = plt.colorbar(label='count')
cb.set_label('COUNT',size=20)
cb.ax.tick_params(labelsize=20) 
cb.set_alpha(1)

ax1.get_array()   #has length of 95
ax1._offsets       #2D array array of length 95

我想知道数据中每个“坐标值”的“计数值”。轴实例有一个名为“_offsets”的属性,绘制时会生成与 plt.hexbin 相同的图,因此我认为这可能是坐标值,但这些值与“data”中的值略有不同。 我所说的坐标是指 x 轴和 y 轴的值。

编辑:正如评论中所建议的,在轴实例上应用 .get_array() 会给出长度 (95) 等于 ._offsets 属性长度的数组。我的目标是从“数据”中找到相应点的“计数”。例如data[0] 处的“count”值是多少?

hexbin plot from python code

最佳答案

PolyCollection.get_array() 方法将返回每个六边形的计数数。 .get_offsets() 方法将返回每个六边形的中心。

import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt

data = np.random.uniform(1.0, 10, size=(50,2))

pc = plt.hexbin(data[:,0], data[:,1], bins=None,gridsize=(7,4), cmap="viridis_r",
                vmin=0, vmax=5, mincnt=1.0)

cb = plt.colorbar(label='count')
cb.set_label('COUNT',size=20)
cb.ax.tick_params(labelsize=20) 
cb.set_alpha(1)

counts = pc.get_array() 
positions = pc.get_offsets() 

print(counts[:10])
print(positions[:10])

for c, (x,y) in zip(counts[:10],positions[:10]):
    plt.text(x,y,"{:d}".format(int(c)), ha="center", va="center")

plt.show()

将打印

[1. 1. 1. 2. 2. 2. 1. 2. 1. 3.]
[[1.04969905 1.41805371]
 [1.04969905 3.53403589]
 [1.04969905 7.76600025]
 [1.04969905 9.88198243]
 [2.28920799 5.65001807]
 [2.28920799 7.76600025]
 [2.28920799 9.88198243]
 [3.52871693 1.41805371]
 [3.52871693 3.53403589]
 [3.52871693 5.65001807]]

并显示

enter image description here

例如,第一个六边形以 x=1.04969905, y=1.41805371 为中心,并且其中有一个点 (count==1)。第 10 个六边形以 x=3.52871693, y=5.65001807 为中心,其中有 3 个点 (count==3)。

关于matplotlib - 如何通过 matplotlib 标准化后获取各个点的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752826/

相关文章:

python - 在 python 中读取 *.mhd/*.raw 格式

python - Matplotlib:显示 numpy "sparse"数组 - 放大点?

database - Vb6 到 C# 迁移 : Normalizing an Old Access Db

python - 如何在 Pandas 数据框中对0到1之间的变量进行归一化

android - 如何在 flutter 中规范化 [-1, 1] 之间的数据

machine-learning - 词频特征归一化

python - 使用对数对数图进行多项式拟合

python - Matplotlib 单选按钮缩放

python - 如何叠加 Pandas 图、matplotlib 图和轴

MySQL创建表并在行为空时返回特定值