Sur Matplotlib lexique, je pense que tu veux un hexbin parcelle.
Si vous n'êtes pas familier avec ce type d'intrigue, c'est juste un histogramme bivarié dans lequel le plan xy est tessellé par une grille régulière d'hexagones.
Ainsi, à partir d'un histogramme, vous pouvez simplement compter le nombre de points qui tombent dans chaque hexagone, discrétiser la région de traçage comme un ensemble de Windows pour affecter chaque point à l'une de ces fenêtres ; enfin, pour faire correspondre les fenêtres à un fichier matrice de couleurs et vous obtenez un diagramme hexagonal.
Bien qu'ils soient moins couramment utilisés que les cercles ou les carrés, les hexagones sont intuitivement un meilleur choix pour la géométrie du conteneur de binning :
-
les hexagones ont symétrie plus proche du voisin (par exemple, les bacs carrés ne le font pas, par exemple, la distance de un point sur la frontière d'un carré à un point à l'intérieur de ce carré n'est pas partout égal) et
-
L'hexagone est le n-polygone le plus élevé qui donne plan régulier tessellation (Par exemple, vous pouvez sans risque refaire le sol de votre cuisine avec des carreaux de forme hexagonale car il n'y aura pas d'espace vide entre les carreaux lorsque vous aurez terminé - ce qui n'est pas vrai pour tous les autres polygones supérieurs à n, n >= 7).
( Matplotlib utilise le terme hexbin l'intrigue ; il en va de même pour (AFAIK) tous les bibliothèques de traçage pour R ; je ne sais toujours pas si c'est le terme généralement accepté pour les intrigues de ce type, mais je pense que c'est probable étant donné que hexbin est le diminutif de binning hexagonal qui décrit l'étape essentielle de la préparation des données pour l'affichage).
from matplotlib import pyplot as PLT
from matplotlib import cm as CM
from matplotlib import mlab as ML
import numpy as NP
n = 1e5
x = y = NP.linspace(-5, 5, 100)
X, Y = NP.meshgrid(x, y)
Z1 = ML.bivariate_normal(X, Y, 2, 2, 0, 0)
Z2 = ML.bivariate_normal(X, Y, 4, 1, 1, 1)
ZD = Z2 - Z1
x = X.ravel()
y = Y.ravel()
z = ZD.ravel()
gridsize=30
PLT.subplot(111)
# if 'bins=None', then color of each hexagon corresponds directly to its count
# 'C' is optional--it maps values to x-y coordinates; if 'C' is None (default) then
# the result is a pure 2D histogram
PLT.hexbin(x, y, C=z, gridsize=gridsize, cmap=CM.jet, bins=None)
PLT.axis([x.min(), x.max(), y.min(), y.max()])
cb = PLT.colorbar()
cb.set_label('mean value')
PLT.show()
0 votes
Tout aussi pertinent : Méthode efficace de calcul de la densité de points irrégulièrement espacés