[PYTHON] Comment trouver la zone du diagramme de Boronoi

introduction

Je voulais trouver la zone de la carte de Boronoi, mais j'ai eu du mal à trouver l'article qui demandait la zone, alors j'aimerais l'écrire sous forme de mémo.

code

Je mettrai le code immédiatement.


def voronoi_area(points):
    v = Voronoi(points)
    vol = np.zeros(v.npoints)
    for i, reg_num in enumerate(v.point_region):
        indices = v.regions[reg_num]
        if -1 in indices: 
            vol[i] = np.inf
        else:
            vol[i] = ConvexHull(v.vertices[indices]).volume
    return vol

sample_points = [[-2, 6], [ 3, -8], [ 5, 9], [ 4, 5], [-7, 2], [ 3, 4]]
voronoi_area(sample_points)
# >>> [inf, inf, inf, 205.92126984, inf, 52.62380952]

Puisqu'il y a une partie qui devient inévitablement infinie dans la zone de la figure de Boronoi, j'essaye de la sortir comme np.inf. Si vous voulez l'empêcher de devenir infini, vous devez le refléter. Je pense que c'est nécessaire pour trouver la zone du diagramme de bore des athlètes, je vais donc la lister ci-dessous.


def voronoi_volumes(points, x_max, y_max):
    points_len = np.shape(points)[0]
    points1 = points.copy()
    points1[:,1] = - points[:,1]
    points2 = points.copy()
    points2[:,1] = 2 * y_max - points[:,1]
    points3 = points.copy()
    points3[:,0] = - points[:,0]
    points4 = points.copy()
    points4[:,0] = 2 * x_max - points[:,0]
    points = np.concatenate((points, points1, points2, points3, points4), axis=0)
    v = Voronoi(points)
    vol = np.zeros(v.npoints)
    for i, reg_num in enumerate(v.point_region):
        indices = v.regions[reg_num]
        vol[i] = ConvexHull(v.vertices[indices]).volume
    return vol[:points_len]

Entrez la valeur maximale de l'axe X dans x_max et la valeur maximale de l'axe Y dans y_max.

À la fin

Je pense que le diagramme de Boronoi est souvent utilisé lors de l'analyse du sport, j'espère donc que vous l'utiliserez.

Recommended Posts

Comment trouver la zone du diagramme de Boronoi
Comment trouver le nombre optimal de clusters pour les k-moyennes
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Trouvez l'aire de l'ensemble somme des rectangles qui se chevauchent
Comment vérifier la version de Django
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment calculer la volatilité d'une marque
Trouver la main de "Millijan" par l'optimisation des combinaisons
Comment connaître le nombre de processeurs sans utiliser la commande sar
Comment trouver la corrélation pour les variables catégorielles
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
Comment connaître le numéro de port du service xinetd
Comment obtenir le nombre de chiffres en Python
La décision de scikit-learn Comment visualiser un modèle en bois
[Blender] Comment définir dynamiquement les sélections EnumProperty
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment frapper le document de Magic Function (Line Magic)
Comment accéder à la variable globale du module importé
[Selenium] Comment spécifier le chemin relatif de chromedriver?
Comment utiliser le générateur
Comment trouver la distance de Maharanobis
Comment utiliser le décorateur
Comment augmenter l'axe
Comment démarrer la première projection
J'ai essayé de trouver l'entropie de l'image avec python
Comment augmenter la vitesse de traitement de l'acquisition de la position des sommets
[Ubuntu] Comment supprimer tout le contenu du répertoire
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Comment tester les attributs ajoutés par add_request_method de pyramid
Hériter de la bibliothèque standard pour trouver la valeur moyenne de Queue
Comment calculer la quantité de calcul appris de ABC134-D
(Note) Comment passer le chemin de votre propre module
Comment résumer les résultats de FreeSurfer ~ aparc, aseg, wmparc ~
Comment exécuter automatiquement la fonction d'exportation de GCP Datastore
Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
Comment voir le contenu du fichier ipynb du notebook Jupyter
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment trouver la quantité moyenne d'informations (entropie) de la distribution de probabilité d'origine à partir de l'échantillon
Trouvez la définition de la valeur de errno
Comment utiliser la fonction zip
Comment utiliser le module optparse
Résumé de l'utilisation de pandas.DataFrame.loc
Résumé de l'utilisation de pyenv-virtualenv
Comment lire l'ensemble de données SNLI
Comment obtenir la version Python
Comment écraser la sortie sur la console
Résumé de l'utilisation de csvkit
Comment utiliser le module ConfigParser
Supplément à l'explication de vscode
Comment déterminer l'existence d'un élément sélénium en Python
Comment modifier le niveau de journalisation d'Azure SDK pour Python
Comment implémenter du code Java en arrière-plan de Red Hat (Linux ONE)
Comment connaître la structure interne d'un objet en Python
Comment changer la couleur du seul bouton pressé avec Tkinter
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
[EC2] Comment installer Chrome et le contenu de chaque commande
Comment vérifier la taille de la mémoire d'une variable en Python
Créez le thème de Pythonista 3 comme Monokai (comment créer votre propre thème)