[PYTHON] Que faire si vous vous fâchez contre les `` déclarations '' doivent être une liste 2D ... dans la flèche matplotlib

Problème de réglage

matplotlib de python a une fonction pour afficher une flèche.

import matplotlib.pyplot as plt

dx = 0.3
dy = 0.3
params = {
    'width':0.01,
    }
plt.arrow(0, 0, dx, dy, **params)
plt.xlim(-0.5, 0.5)
plt.ylim(-0.5, 0.5)
plt.show()

Figure.png

Lors de la définition des points de début et de fin d'une flèche, vous pouvez définir si la flèche la contient ou ne l'inclut pas avec length_includes_head. C'est un paramètre qui n'est pas inclus par défaut.

import matplotlib.pyplot as plt

dx = 0.0
dy = 0.2
params = {
    'width':0.01,
    }
plt.arrow(-0.1, 0, dx, dy, **params)

params = {
    'width':0.01,
    'length_includes_head':True,
    }
plt.arrow(0.1, 0, dx, dy, **params)

plt.grid()

plt.xlim(-0.5, 0.5)
plt.ylim(-0.5, 0.5)
plt.show()

Figure_.png

Lorsque vous dessinez une flèche de longueur 0, le résultat changera selon que le fer est inclus ou non, et une erreur se produira si le fer est inclus.

S'il ne comprend pas de fer:

test1.py


import matplotlib.pyplot as plt

dx = 0.0
dy = 0.0
params = {
    'width':0.01,
    }
plt.arrow(0, 0, dx, dy, **params)
plt.xlim(-0.5, 0.5)
plt.ylim(-0.5, 0.5)
plt.show()

Figure_1.png

En incluant le fer:

test2.py


import matplotlib.pyplot as plt

dx = 0.0
dy = 0.0
params = {
    'width':0.01,
    'length_includes_head':True,
    }
plt.arrow(0, 0, dx, dy, **params)
plt.xlim(-0.5, 0.5)
plt.ylim(-0.5, 0.5)
plt.show()
Traceback (most recent call last):
  File "test2.py", line 9, in <module>
    plt.arrow(0, 0, dx, dy, **params)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/pyplot.py", line 2411, in arrow
    return gca().arrow(x, y, dx, dy, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 4822, in arrow
    a = mpatches.FancyArrow(x, y, dx, dy, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/patches.py", line 1269, in __init__
    super().__init__(verts, closed=True, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/patches.py", line 938, in __init__
    self.set_xy(xy)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/patches.py", line 1005, in set_xy
    self._path = Path(xy, closed=self._closed)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/path.py", line 130, in __init__
    "'vertices' must be a 2D list or array with shape Nx2")
ValueError: 'vertices' must be a 2D list or array with shape Nx2

approche

Remède 1

Si vous modifiez la longueur de la flèche et la largeur de la flèche en une bonne sensation, l'erreur disparaît.

import matplotlib.pyplot as plt

dx = 1.0e-8
dy = 0.0
params = {
    'width':1.0e-8,
    'length_includes_head':True,
    }
plt.arrow(0, 0, dx, dy, **params)
plt.xlim(-0.5, 0.5)
plt.ylim(-0.5, 0.5)
plt.show()

(Comme rien n'est affiché, le résultat d'affichage est omis)

Remède 2

La cause est la phrase suivante près de la ligne 1227 de matplotlib / patches.py (/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/patches.py dans mon environnement)

        if not length:
            verts = []  # display nothing if empty
        else:
            ...

Donc, verts = [] est en colère à cause du mauvais type. Le moyen le plus simple de résoudre ce problème est de définir la longueur, etc. juste avant cela.

        if not length:
          length = distance = 1.0E-8

        if not length:
            verts = []  # display nothing if empty
        else:
            ...

(Comme rien n'est affiché, le résultat d'affichage est omis)

prime

Veuillez noter que l'affichage sera étrange si la longueur de la flèche est inférieure à la taille du fer.

import matplotlib.pyplot as plt

dx = 0.001
dy = 0.0
params = {
    'width':0.01,
    'length_includes_head':True,
    }
plt.arrow(0, 0, dx, dy, **params)
plt.xlim(-0.5, 0.5)
plt.ylim(-0.5, 0.5)
plt.show()

Figure_2_1.png

Recommended Posts

Que faire si vous vous fâchez contre les `` déclarations '' doivent être une liste 2D ... dans la flèche matplotlib
Que faire si vous obtenez moins zéro en Python
Que faire si vous vous fâchez avec TensorFlow v2 sans l'attribut "app"
Que faire si vous obtenez une erreur de remplacement obligatoire `get_config` lorsque vous essayez de model.save avec Keras
Que faire si vous obtenez une erreur "Aucune version trouvée" sur pipenv
Que faire si vous êtes en colère contre "le backend Gtk * nécessite l'installation de pygtke" même si pygtk est inclus dans matplotlib
Que faire si Combinaisons devient «couverture inconnue»
Que faire si vous obtenez une erreur lors de l'importation de matplotlib en Python (Mac)
Que faire si vous obtenez une erreur de décodage Unicode avec l'installation de pip
Que faire si vous obtenez une erreur Impossible de récupérer le lien métallique pour le référentiel avec yum
Que faire si vous vous perdez dans la référence de fichier avec FileNotFoundError
Que faire lorsque TypeError se produit au minimum et au maximum de numpy
Que faire lorsque vous vous fâchez avec "Value Error: unknown local: UTF-8" dans python manage.py syncdb
swapon failed: Que faire si vous vous fâchez contre l'opération non autorisée
Que faire si vous obtenez «Python non configuré». Utilisation de PyDev dans Eclipse
Que faire si une erreur de décodage Unicode se produit dans pip
Que faire si vous obtenez une erreur en essayant d'envoyer un message dans tasks.loop () immédiatement après le démarrage
Que faire quand "Aucun noyau pour le langage python trouvé" apparaît dans Hydrogen
Que faire si vous obtenez une erreur de mémoire lors de la conversion de PySparkDataFrame en PandasDataFrame
Que faire si vous obtenez "(35, 'Erreur de connexion SSL')" dans pycurl (l'un d'entre eux)
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
Que faire si pip donne une DistributionError dans Homebrew
Que faire si une erreur 0xC0000005 se produit dans tf.train.start_queue_runners ()
Que faire si vous ne pouvez pas vous connecter en tant que root
Que faire si vous recevez une erreur d'appel avec trop d'arguments d'entrée à faire et retourner dans un test de golang
Que faire lorsque swagger-codegen est terminé avec python et Erreur d'importation: aucun module nommé n'apparaît
Que faire si vous obtenez une erreur lors de l'exécution de "certbot renouveler" dans l'environnement CakePHP
Si vous supprimez la liste à mettre en boucle, vous deviendrez terrible.
Que faire si vous ne pouvez pas utiliser la poubelle dans Lubuntu 18.04.
Que faire si vous obtenez une erreur indiquant que le compilateur C ne peut pas créer d'exécutables dans configure
Que faire si vous vous mettez en colère si vous n'avez pas libxml / xmlversion.h lors de l'installation de lxml sur CentOS
Que faire si vous obtenez `locale.Error: unsupported locale setting` lors de l'obtention de la date du jour en Python
Que faire s'il y a un décimal dans python json .dumps
Que faire si PDO n'est pas trouvé dans Laravel ou CakePHP
Que faire si vous ne pouvez pas utiliser la recherche de grille de sklearn en Python
Que faire si vous êtes bloqué pendant l'installation d'Anaconda sur Linux
Que faire si vous obtenez une erreur lors du chargement de mnist
Que faire si vous ne pouvez pas installer avec pip dans l'environnement babun
Que faire si vous obtenez Impossible de récupérer l'URL 443 avec pip
Que se passe-t-il si vous "importez A, B comme C" en Python?
Que faire lorsqu'un message d'avertissement est affiché dans la liste des pip
Que faire si vous obtenez "La session n'a pas pu être ouverte" lors de l'installation de CentOS sur VirtualBox
Que faire si vous obtenez un avertissement "Mauvaise plateforme Python" lors de l'utilisation de Python avec l'EDI NetBeans
Que faire si vous obtenez une erreur d'autorisation refusée (clé publique) lorsque vous essayez de tirer sur le hub Git
Que faire si vous obtenez l'erreur Le script WSGI cible '/ var / www / xxx / xxx.wsgi' ne peut pas être chargé en tant que module python
Que faire si pipreqs aboutit à UnicodeDecodeError
Que faire lorsque le shell pipenv devient impossible
Que faire si pip ne peut pas être installé
Que faire pour obtenir une feuille de calcul Google en Python
Que faire si une erreur de codage Unicode se produit dans Sublime Text Python
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
[Python] Choses à vérifier lorsqu'une erreur de décodage Unicode apparaît dans Django
Que faire si NotADirectoryError: [Errno 20] Pas un répertoire: 'xdg-settings' apparaît dans le notebook jupyter
Que faire si une erreur de version se produit dans le pilote Selenium Chrome
Qu'est-ce que vous aimez dans la conversion d'un tableau (liste) en chaîne?
Que faire si vous obtenez l'erreur L'entrée contient NaN, l'infini ou une valeur trop grande pour dtype ('float64').
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3
Que faire lorsqu'une erreur "service inconnu" est renvoyée par le serveur gRPC