pygmt.Figure.plot

Figure.plot(data=None, x=None, y=None, size=None, direction=None, *,
straight_line=None, frame=None, cmap=None, offset=None, error_bar=None,
connection=None, fill=None, intensity=None, projection=None, close=None,
no_clip=None, region=None, style=None, verbose=None, pen=None, zvalue=None,
aspatial=None, binary=None, panel=None, nodata=None, find=None,
coltypes=None, gap=None, header=None, incols=None, label=None,
perspective=None, transparency=None, wrap=None, **kwargs)

Tracez des lignes, des polygones et des symboles en 2D.

Prend une matrice, des paires (x,y) ou un nom de fichier en entrée et trace des lignes, des polygones ou des symboles à ces emplacements sur une carte.

Doit fournir soit data ou x / y .

Si vous fournissez des données via x / y , fill il peut s’agir d’un tableau 1-D qui sera mappé à une palette de couleurs.

Si un symbole est sélectionné et qu’aucune taille de symbole n’est indiquée, le tracé interprétera la troisième colonne des données d’entrée comme la taille du symbole. Les symboles dont la taille est <= 0 sont ignorés. Si aucun symbole n’est spécifié, le code du symbole (voir style ci-dessous) doit être présent dans la dernière colonne de l’entrée. Si style n’est pas utilisé, une ligne reliant les points de données sera tracée à la place. Pour fermer explicitement des polygones, utilisez close. Sélectionnez un remplissage avec fill. Si fill est défini, pen contrôlera si le contour du polygone est dessiné ou non. Si un symbole est sélectionné, fill déterminez pen respectivement le remplissage et le contour/pas de contour.

Paramètre

  • data ( str ou numpy.ndarray ou pandas.DataFrame ou xarray.Dataset ou geopandas.GeoDataFrame ) – Passez des valeurs (x, y, z) ou (longitude, latitude, élévation) en fournissant un nom de fichier à une table de données

  • x/y ( float ou tableaux 1-D ) – Les coordonnées x et y, ou les tableaux de coordonnées x et y des points de données

  • taille ( tableau 1-D ) – La taille des points de données dans les unités spécifiées à l’aide de style. Valable uniquement si vous utilisez x/ y.

  • direction ( liste de deux tableaux 1-D ) – Si vous tracez des vecteurs (en utilisant style= »V » ou style= »v »), alors devrait être une liste de deux tableaux 1-D avec les directions vectorielles. Il peut s’agir d’angle et de longueur, d’azimut et de longueur, ou de composants x et y, selon les options de style choisies.

  • projection ( str ) – Sélectionnez la projection cartographique .

  • region ( chaîne ou liste ) – xmin/xmax/ymin/ymax [ +r ][ +u unité ]. Spécifiez la région d’intérêt.

  • straight_line ( bool ou str ) – [ m | p | x | y ]. Par défaut, les segments de lignes géographiques sont dessinés sous forme d’arcs de grand cercle. Pour les dessiner sous forme de lignes droites, utilisez straight_line=True. Vous pouvez également ajouter m pour tracer la ligne en suivant d’abord un méridien, puis un parallèle. Ou ajoutez p pour commencer à suivre un parallèle, puis un méridien. (Cela peut être pratique pour tracer une ligne le long de parallèles, par exemple). Pour les données cartésiennes, les points sont simplement connectés, sauf si vous ajoutez x ou y pour dessiner des courbes en escalier dont le premier mouvement est le long de x ou y, respectivement.

  • frame ( bool ou str ou list ) – Définit le cadre de délimitation de la carte et les attributs des axes .

  • cmap ( str ) – Nom de fichier d’un fichier CPT ou d’une série de couleurs séparées par des virgules (par exemple, color1 , color2 , color3 ) pour créer automatiquement un CPT linéaire continu à partir de ces couleurs.

  • offset Décalez le symbole du tracé ou les emplacements des lignes des quantités données dx/dy [par défaut, pas de décalage]. Si dy n’est pas donné, il est mis égal à dx .

  • error_bar ( bool ou str ) – [ x | y | X | Y ][ +a | A ][ +cl | f ][ +n ][ +w majuscule ][ +p plume ]. Dessinez des barres d’erreur.

  • connection ( str ) – [ c | n | r ][ une | f | s | r | point de référence ]. Modifiez la manière dont les points sont connectés (en spécifiant un schéma ) et les données sont regroupées (en spécifiant une méthode ). Ajoutez l’un des trois schémas de connexion de ligne :
    • c : dessine des segments de ligne continus pour chaque groupe [par défaut].

    • r : Dessine des segments de ligne à partir d’un point de référence réinitialisé pour chaque groupe.

    • n : dessine des réseaux de segments de ligne entre tous les points de chaque groupe.

    Ajoutez éventuellement l’une des quatre méthodes de segmentation pour définir le groupe : - a : Ignorer tous les en-têtes de segment, c’est-à-dire laisser tous les points appartenir à un seul groupe et définir le point de référence du groupe sur le tout premier point du premier fichier. - f : Considérez toutes les données de chaque fichier comme un seul groupe distinct et réinitialisez le point de référence du groupe au premier point de chaque groupe. - s : les en-têtes de segment sont respectés afin que chaque segment soit un groupe ; le point de référence du groupe est réinitialisé au premier point de chaque segment entrant [par défaut]. - r : Identique à s , mais le point de référence du groupe est réinitialisé après chaque enregistrement au point précédent (cette méthode n’est disponible qu’avec le connection= »r » schéma). Au lieu des codes a | f | s | r vous pouvez ajouter les coordonnées d’un point de référence qui servira de point de référence externe fixe pour tous les groupes.

  • fill ( str ) – Définissez la couleur ou le motif pour remplir les symboles ou les polygones [par défaut, pas de remplissage]. fill peut être un tableau 1-D, mais il n’est valide que si vous utilisez x/ y et cmap=True est également requis.

  • intensity ( float ou bool ou tableau 1-D ) – Fournissez une valeur d’intensité (nominalement comprise entre -1 et +1) pour moduler la couleur de remplissage en simulant l’éclairage. Si vous utilisez intensity=True, nous lirons à la place l’intensité de la première colonne de données après les paramètres de symbole (si donnés). l’intensité peut également être un tableau 1-D pour définir une intensité variable pour les symboles, mais elle n’est valable que pour les paires x/ y.

  • close ( str ) – [ +b | d | D ][ +xl | r | x0 ][ +yl | r | y0 ][ +p plume ]. Forcer les polygones fermés.

  • no_clip (boll ou str) - [ c | r ]. Ne coupez pas les symboles qui se trouvent à l’extérieur des limites du cadre [Par défaut, trace les points dont les coordonnées sont strictement à l’intérieur des limites du cadre uniquement]. Le paramètre ne s’applique pas aux lignes et aux polygones qui sont toujours découpés dans la région de la carte. Pour les cartes périodiques (360-longitude), nous devons tracer tous les symboles deux fois au cas où ils seraient coupés par la limite répétitive. no_clip=True désactivera l’écrêtage et ne tracera pas les symboles répétitifs. Utilisez no_clip= »r » pour désactiver l’écrêtage mais conserver le tracé de ces symboles répétitifs, ou utilisez no_clip= »c » pour conserver l’écrêtage mais désactiver le tracé des symboles répétitifs.

  • style ( str ) – Symboles de tracé (y compris les vecteurs, les tranches de tarte, les fronts, les lignes décorées ou entre guillemets).

  • pen ( str ) – Définissez les attributs du stylo pour les lignes ou le contour des symboles.

  • verbose ( bool ou str ) – Sélectionnez le niveau de verbosité [la valeur par défaut est w ], qui module les messages écrits sur stderr. Choisissez parmi 7 niveaux de verbosité :
    • q - Des messages d’erreur silencieux, même fatals, ne sont pas générés

    • e - Messages d’erreur uniquement

    • w - Avertissements [par défaut]

    • t - Timings (temps d’exécution des rapports pour les algorithmes chronophages)

    • i - Messages d’information (comme verbose=True)

    • c - Avertissements de compatibilité

    • d - Messages de débogage

  • zvalue ( str ) – valeur | fichier . Au lieu de spécifier un remplissage de symbole ou de polygone et une couleur de contour via fill et pen, donnez à la fois une valeur via zvalue et une table de correspondance des couleurs via cmap. Vous pouvez également donner le nom d’un fichier avec une valeur z (lue à partir de la dernière colonne) pour chaque polygone dans les données d’entrée. Pour l’appliquer à la couleur de remplissage, utilisez fill= »+z ». Pour l’appliquer à la couleur du stylo, ajoutez +z à pen.

  • aspatial ( bool ou str ) – [ col =] nom [,…]. Contrôlez la manière dont les données aspatiales sont gérées lors de l’entrée et de la sortie.

  • binary ( bool ou str ) – i | o [ ncols ][ type ][ w ][ +l | b ]. Sélectionnez l’entrée binaire native (en utilisant binary= »i ») ou la sortie (en utilisant binary= »o »), où ncols est le nombre de colonnes de données de type , qui doit être l’une des suivantes :
    • c - int8_t (caractère signé 1 octet)

    • u - uint8_t (caractère non signé de 1 octet)

    • h - int16_t (entier signé sur 2 octets)

    • H - uint16_t (entier non signé sur 2 octets)

    • i - int32_t (entier signé sur 4 octets)

    • I - uint32_t (entier non signé de 4 octets)

    • l - int64_t (entier signé sur 8 octets)

    • L - uint64_t (entier non signé de 8 octets)

    • f - Flottant simple précision de 4 octets

    • d - Flottant double précision de 8 octets

    • x - utilisé pour ignorer les ncols n’importe où dans l’enregistrement

    Pour les enregistrements avec des types mixtes, ajoutez des combinaisons supplémentaires séparées par des virgules de type ncols (sans espace). Les modificateurs suivants sont pris en charge :

    • w après n’importe quel élément pour forcer l’échange d’octets.

    • +l | b pour indiquer que l’ensemble du fichier de données doit être lu respectivement en petit ou gros boutien.

  • panel ( bool ou int ou list ) – [ row,col | indice ]. Sélectionnez un panneau de sous-parcelle spécifique. Autorisé uniquement en mode sous-parcelle. Utilisez panel=True pour passer au panneau suivant dans l’ordre sélectionné. Au lieu de row,col, vous pouvez également donner un index de valeur scalaire qui dépend de l’ordre que vous autolabel avez défini lors de la définition de la sous-parcelle. Remarque : row , col et index commencent tous à 0.

  • nodata ( str ) – i | o aucune donnée . Remplacez les valeurs spécifiques par NaN (pour les données tabulaires). Par exemple, nodata= »-9999 » remplacera toutes les valeurs égales à -9999 par NaN lors de l’entrée et toutes les valeurs NaN par -9999 lors de la sortie. Ajoutez i à la valeur nodata pour les colonnes d’entrée uniquement. Ajoutez o à la valeur nodata pour les colonnes de sortie uniquement.

  • levels ( str ou int ) - Spécifiez les lignes de contour à générer.
    • Le nom de fichier d’un fichier CPT où les limites de couleur seront utilisées comme niveaux de contour.

    • Le nom de fichier d’un fichier à 2 (ou 3) colonnes contenant les niveaux de contour (col 1), ( C )ontour ou ( A )nnotate (col 2) et l’angle optionnel (col 3).

    • Un intervalle de contour fixe cont_int ou un contour unique avec + cont_int .

  • coltypes ( str ) – [ i | o ] colinfo . Spécifiez les types de données des colonnes d’entrée et/ou de sortie (données temporelles ou géographiques).

  • gap ( str ou liste ) – x | y | z | d | X | Y | D écart [ u ][ +a ][ +c col ][ +n | p ]. Examinez l’espacement entre les points de données consécutifs afin d’imposer des ruptures de ligne. Pour spécifier plusieurs critères, fournissez une liste avec chaque élément contenant une chaîne décrivant un ensemble de critères.
    • x | X - définit un écart lorsqu’il y a un changement suffisamment important dans les coordonnées x (majuscules pour utiliser les coordonnées projetées).

    • y | Y - définit un écart lorsqu’il y a un changement suffisamment important dans les coordonnées y (majuscules pour utiliser les coordonnées projetées).

    • d | D - définit un écart lorsqu’il y a une distance suffisamment grande entre les coordonnées (majuscules pour utiliser les coordonnées projetées).

    • z - définit un espace lorsqu’il y a un changement suffisamment important dans les données z. Utilisez +c col pour modifier la colonne de données z [ la colonne par défaut est 2 (c’est-à-dire la 3e colonne)].

    Une unité u peut être ajoutée à l” écart spécifié : - Pour les données géographiques ( x | y | d ), l’unité peut être arc- d (egrees), m (inutes) et s (econds) , ou (m) e (ters), f (eet), k (ilomètres) ), M (iles) ou n (miles automatiques) [La valeur par défaut est (m) e (ters)]. - Pour les données projetées ( X | Y | D ), l’unité peut être i (inches), c (entimètres) ou p (points). Ajoutez le modificateur +a pour spécifier que tous les critères doivent être remplis [la valeur par défaut impose des pauses si l’un des critères est rempli].

    L’un des modificateurs suivants peut être ajouté :

    • +n - spécifie que la valeur précédente moins la valeur de la colonne actuelle doit dépasser l’écart pour qu’une rupture soit imposée.

    • +p - spécifie que la valeur actuelle moins la valeur précédente doit dépasser l’écart pour qu’une pause soit imposée.

  • D ( str ) – Vider les coordonnées du contour.

  • E ( str ) – Informations sur le réseau.

  • label_placement ( str ) - [ ré | f | n | l | L | x | X ] arguments . Contrôlez le placement des étiquettes le long des lignes entre guillemets. Il prend en charge cinq algorithmes de contrôle.

  • I ( bool ) – Colorie les triangles à l’aide de CPT.

  • triangular_mesh_pen ( str ) – Stylo pour dessiner la triangulation sous-jacente [la valeur par défaut est None].

  • no_clip ( bool ) – Ne coupez pas les contours ou l’image aux limites du cadre [la valeur par défaut est Falsede tenir à l’intérieur region].

  • Q ( float ou str ) – [ cut ][ +z ]. Ne dessinez pas de contours avec un nombre de points inférieur au nombre de points réduit .

  • skip ( bool ou str ) – [ p | t ]. Ignorer les points d’entrée en dehors de la région.

  • pen ( str ) – Définissez les attributs du stylo pour les lignes ou le contour des symboles.

  • verbose ( bool ou str ) –

Sélectionnez le niveau de verbosité [la valeur par défaut est w ], qui module les messages écrits sur stderr. Choisissez parmi 7 niveaux de verbosité :
  • q - Des messages d’erreur silencieux, même fatals, ne sont pas générés

  • e - Messages d’erreur uniquement

  • w - Avertissements [par défaut]

  • t - Timings (temps d’exécution des rapports pour les algorithmes chronophages)

  • i - Messages d’information (comme verbose=True)

  • c - Avertissements de compatibilité

  • d - Messages de débogage

  • binary ( bool ou str ) – I | o [ ncols ][ type ][ w ][ +l | b ]. Sélectionnez l’entrée binaire native (en utilisant binary= »i ») ou la sortie (en utilisant binary= »o »), où ncols est le nombre de colonnes de données de type , qui doit être l’une des suivantes :
    • c - int8_t (caractère signé 1 octet)

    • u - uint8_t (caractère non signé de 1 octet)

    • h - int16_t (entier signé sur 2 octets)

    • H - uint16_t (entier non signé sur 2 octets)

    • i - int32_t (entier signé sur 4 octets)

    • I - uint32_t (entier non signé de 4 octets)

    • l - int64_t (entier signé sur 8 octets)

    • L - uint64_t (entier non signé de 8 octets)

    • f - Flottant simple précision de 4 octets

    • d - Flottant double précision de 8 octets

    • x - utilisé pour ignorer les ncols n’importe où dans l’enregistrement

    Pour les enregistrements avec des types mixtes, ajoutez des combinaisons supplémentaires séparées par des virgules de type ncols (sans espace). Les modificateurs suivants sont pris en charge :

    • w après n’importe quel élément pour forcer l’échange d’octets.

    • +l | b pour indiquer que l’ensemble du fichier de données doit être lu respectivement en petit ou gros boutien.

  • panel ( bool ou int ou list ) – [ row,col | indice ]. Sélectionnez un panneau de sous-parcelle spécifique. Autorisé uniquement en mode sous-parcelle. Utilisez panel=True pour passer au panneau suivant dans l’ordre sélectionné. Au lieu de row,col, vous pouvez également donner un index de valeur scalaire qui dépend de l’ordre que vous autolabel avez défini lors de la définition de la sous-parcelle. Remarque : row , col et index commencent tous à 0.

  • nodata ( str ) – i | o aucune donnée . Remplacez les valeurs spécifiques par NaN (pour les données tabulaires). Par exemple, nodata= »-9999 » remplacera toutes les valeurs égales à -9999 par NaN lors de l’entrée et toutes les valeurs NaN par -9999 lors de la sortie. Ajoutez i à la valeur nodata pour les colonnes d’entrée uniquement. Ajoutez o à la valeur nodata pour les colonnes de sortie uniquement.

  • find ( chaîne ) – [ ~ ] « motif » | [ ~ ]/ expression régulière /[ i ]. Ne transmettez que les enregistrements qui correspondent au modèle ou aux expressions régulières donnés [par défaut, traite tous les enregistrements]. Ajoutez ~ au motif ou à l’expression régulière pour ne transmettre que les expressions de données qui ne correspondent pas au motif. Ajoutez i pour une correspondance insensible à la casse. Cela ne s’applique pas aux en-têtes ou aux en-têtes de segment.

  • coltypes ( str ) – [ I | o ] colinfo . Spécifiez les types de données des colonnes d’entrée et/ou de sortie (données temporelles ou géographiques).

  • gap (str ou list) – x | y | z | d | X | Y | D écart [ u ][ +a ][ +c col ][ +n | p ]. Examinez l’espacement entre les points de données consécutifs afin d’imposer des ruptures de ligne. Pour spécifier plusieurs critères, fournissez une liste avec chaque élément contenant une chaîne décrivant un ensemble de critères.

    • x | X - définit un écart lorsqu’il y a un changement suffisamment important dans les coordonnées x (majuscules pour utiliser les coordonnées projetées).

    • y | Y - définit un écart lorsqu’il y a un changement suffisamment important dans les coordonnées y (majuscules pour utiliser les coordonnées projetées).

    • d | D - définit un écart lorsqu’il y a une distance suffisamment grande entre les coordonnées (majuscules pour utiliser les coordonnées projetées).

    • z - définit un espace lorsqu’il y a un changement suffisamment important dans les données z. Utilisez +c col pour modifier la colonne de données z [ la colonne par défaut est 2 (c’est-à-dire la 3e colonne)].

    Une unité u peut être ajoutée à l” écart spécifié :

    • Pour les données géographiques ( x | y | d ), l’unité peut être arc- d (egrees), m (inutes) et s (econds) , ou (m) e (tres), f (pieds), k (ilomètres) ), M* (iles) ou n (miles automatiques) [La valeur par défaut est (m) e (ters)].

    • Pour les données projetées ( X | Y | D ), l’unité peut être i (inches), c (entimètres) ou p (points).

    Ajoutez le modificateur +a pour spécifier que tous les critères doivent être remplis [la valeur par défaut impose des pauses si l’un des critères est rempli]. L’un des modificateurs suivants peut être ajouté :

    • +n - spécifie que la valeur précédente moins la valeur de la colonne actuelle doit dépasser l’écart pour qu’une rupture soit imposée.

    • +p - spécifie que la valeur actuelle moins la valeur précédente doit dépasser l’écart pour qu’une pause soit imposée.

  • header (str) – [i|o][n][+c][+d][+msegheader][+rremark][+ttitle]. Spécifiez que les fichiers d’entrée et/ou de sortie ont n enregistrements d’en-tête [la valeur par défaut est 0]. Préfixez i si seule l’entrée principale doit avoir des enregistrements d’en-tête. Préfixez o pour contrôler l’écriture des enregistrements d’en-tête, avec les modificateurs suivants pris en charge :
    • +d pour supprimer les enregistrements d’en-tête existants.

    • +c pour ajouter un commentaire d’en-tête avec des noms de colonne à la sortie [par défaut, aucun nom de colonne].

    • +m pour ajouter un en-tête de segment segheader à la sortie après le bloc d’en-tête [par défaut, pas d’en-tête de segment].

    • +r pour ajouter un commentaire de remarque à la sortie [par défaut, aucun commentaire]. La chaîne de remarque peut contenir n pour indiquer des sauts de ligne.

    • +t pour ajouter un commentaire de titre à la sortie [par défaut, pas de titre]. La chaîne de titre peut contenir n pour indiquer des sauts de ligne.

  • incols ( str ou tableau 1-D ) – Spécifiez les colonnes de données pour l’entrée principale dans un ordre arbitraire. Les colonnes peuvent être répétées et les colonnes non répertoriées seront ignorées [par défaut, toutes les colonnes sont lues dans l’ordre, en commençant par la première (c’est-à-dire la colonne 0)].
    • Pour un tableau 1-D : spécifiez les colonnes individuelles dans l’ordre d’entrée (par exemple, incols=[1,0] pour la 2ème colonne suivie de la 1ère colonne).

    • Pour str: spécifiez des colonnes individuelles ou des plages de colonnes au format start [: inc ]: stop , où inc prend par défaut la valeur 1 s’il n’est pas spécifié, avec des colonnes et/ou des plages de colonnes séparées par des virgules (par exemple, incols= »0:2,4+l » pour saisir les trois premières colonnes suivies du 5e colonne transformée en log). Pour lire à partir d’une colonne donnée jusqu’à la fin de l’enregistrement, laissez off stop lors de la spécification de la plage de colonnes. Pour lire le texte de fin, ajoutez la colonne t . Ajoutez le numéro de mot à t pour ingérer un seul mot du texte de fin. Au lieu de spécifier des colonnes, utilisez incols= »n » pour lire simplement l’entrée numérique et ignorer le texte de fin. Ajoutez éventuellement l’un des modificateurs suivants à n’importe quelle colonne ou plage de colonnes pour transformer les colonnes d’entrée :
      • +l pour prendre le log10 des valeurs d’entrée.

      • +d pour diviser les valeurs d’entrée par le facteur diviseur [la valeur par défaut est 1].

      • +s pour multiplier les valeurs d’entrée par l” échelle des facteurs [la valeur par défaut est 1].

      • +o pour ajouter le décalage donné aux valeurs d’entrée [la valeur par défaut est 0].

  • label ( str ) – Ajoutez une entrée de légende pour le symbole ou la ligne en cours de tracé.

  • perspective ( liste ou chaîne ) – [ x | y | z ] azim [/ elev [/ zlevel ]][ +w lon0 / lat0 [/ z0 ]][ +v x0 / y0 ]. Sélectionnez la vue en perspective et définissez l’azimut et l’angle d’élévation du point de vue [la valeur par défaut est [180,90]].

  • transparence ( int ou float ) – Définissez le niveau de transparence, dans la plage [0-100] pour cent [la valeur par défaut est 0, c’est-à-dire opaque]. Uniquement visible lorsque la sortie au format PDF ou raster est sélectionnée. Seule la sélection du format PNG ajoute une couche de transparence dans l’image (pour un traitement ultérieur).

  • wrap (str) - y|a|w|d|h|m|s|c period[/phase][+c col]. Convertissez la coordonnée x d’entrée en une coordonnée cyclique, ou une colonne différente si elle est sélectionnée via +c col . Les transformations de coordonnées cycliques suivantes sont prises en charge :
    • y - cycle annuel (normalisé)

    • a - cycle annuel (mensuel)

    • w - cycle hebdomadaire (jour)

    • d - cycle quotidien (heure)

    • h - cycle horaire (minute)

    • m - cycle minute (seconde)

    • s - deuxième cycle (seconde)

    • c - cycle personnalisé (normalisé)

Exemple

import numpy as np
import pygmt

# create a plot with coast, Mercator projection (M) over the continental US
fig = pygmt.Figure()
fig.coast(
    region=[-127, -64, 24, 53],
    projection="M15c",
    frame=True,
    borders=1,
    area_thresh=4000,
    shorelines="0.25p,black",
)


# Left: plot 12 Cartesian vectors with different lengths
x = np.linspace(-116, -116, 12)  # x vector coordinates
y = np.linspace(33.5, 42.5, 12)  # y vector coordinates
direction = np.zeros(x.shape)  # direction of vectors
length = np.linspace(0.5, 2.4, 12)  # length of vectors
# Cartesian vectors (v) with red pen and fill (+g, +p), vector head at
# end (+e), and 40 degree angle (+a) with no indentation for vector head (+h)
style = "v0.2c+e+a40+gred+h0+p1p,red"
fig.plot(x=x, y=y, style=style, pen="1p,red", direction=[direction, length])
fig.text(text="CARTESIAN", x=-112, y=44.2, font="13p,Helvetica-Bold,red", fill="white")


# Middle: plot 7 math angle arcs with different radii
num = 7
x = np.full(num, -95)  # x coordinates of the center
y = np.full(num, 37)  # y coordinates of the center
radius = 1.8 - 0.2 * np.arange(0, num)  # radius
startdir = np.full(num, 90)  # start direction in degrees
stopdir = 180 + 40 * np.arange(0, num)  # stop direction in degrees
# data for circular vectors
data = np.column_stack([x, y, radius, startdir, stopdir])
arcstyle = "m0.5c+ea"  # Circular vector (m) with an arrow at end
fig.plot(data=data, style=arcstyle, fill="red3", pen="1.5p,black")
fig.text(text="CIRCULAR", x=-95, y=44.2, font="13p,Helvetica-Bold,black", fill="white")


# Right: plot geographic vectors using endpoints
NYC = [-74.0060, 40.7128]
CHI = [-87.6298, 41.8781]
SEA = [-122.3321, 47.6062]
NO = [-90.0715, 29.9511]
# `=` means geographic vectors.
# With the modifier '+s', the input data should contain coordinates of start
# and end points
style = "=0.5c+s+e+a30+gblue+h0.5+p1p,blue"
data = np.array([NYC + CHI, NYC + SEA, NYC + NO])
fig.plot(data=data, style=style, pen="1.0p,blue")
fig.text(
    text="GEOGRAPHIC", x=-74.5, y=44.2, font="13p,Helvetica-Bold,blue", fill="white"
)
fig.show()