pygmt.Figure.plot3d¶
Figure.plot3d(data=None, x=None, y=None, z=None, size=None,
direction=None, *, straight_line=None, frame=None, cmap=None,
offset=None, fill=None, intensity=None, projection=None,
zscale=None, zsize=None, close=None, no_clip=None, no_sort=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 3D.
Prend une matrice, des paires (x,y,z) ou un nom de fichier en entrée et trace des lignes, des polygones ou des symboles à ces emplacements en 3D.
Doit fournir soit data ou x / y et z.
Si vous fournissez des données via x / y et z , 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/z ( float ou tableaux 1-D ) – Les coordonnées x, y et z ou les tableaux de coordonnées x, y et z 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 / z.
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 .
zscale/zsize ( float ou str ) – Définissez la mise à l’échelle de l’axe z ou la taille de l’axe z.
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 .
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.
no-sort ( bool ) – Désactivez le tri automatique des éléments en fonction de leur distance par rapport au spectateur. La valeur par défaut consiste à trier les éléments de sorte que les éléments au premier plan soient tracés après les éléments en arrière-plan.
style ( str ) – Symboles de tracé (y compris les vecteurs, les tranches de tarte, les fronts, les lignes décorées ou entre guillemets).
- 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
pen ( str ) – Définissez les attributs du stylo pour les lignes ou le contour des symboles.
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.
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.
- 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).
- espace ( 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.
- 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 pandas as pd
import pygmt
# Load sample iris data
df = pd.read_csv("https://github.com/mwaskom/seaborn-data/raw/master/iris.csv")
# Convert 'species' column to categorical dtype
# By default, pandas sorts the individual categories in an alphabetical order.
# For a non-alphabetical order, you have to manually adjust the list of
# categories. For handling and manipulating categorical data in pandas,
# have a look at:
# https://pandas.pydata.org/docs/user_guide/categorical.html
df.species = df.species.astype(dtype="category")
# Make a list of the individual categories of the 'species' column
# ['setosa', 'versicolor', 'virginica']
# They are (corresponding to the categorical number code) by default in
# alphabetical order and later used for the colorbar labels
labels = list(df.species.cat.categories)
# Use pygmt.info to get region bounds (xmin, xmax, ymin, ymax, zmin, zmax)
# The below example will return a numpy array [0.0, 3.0, 4.0, 8.0, 1.0, 7.0]
region = pygmt.info(
data=df[["petal_width", "sepal_length", "petal_length"]], # x, y, z columns
per_column=True, # report the min/max values per column as a numpy array
# round the min/max values of the first three columns to the nearest
# multiple of 1, 2 and 0.5, respectively
spacing=(1, 2, 0.5),
)
# Make a 3-D scatter plot, coloring each of the 3 species differently
fig = pygmt.Figure()
# Define a colormap to be used for three categories, define the range of the
# new discrete CPT using series=(lowest_value, highest_value, interval),
# use color_model="+csetosa,versicolor,virginica" to write the discrete color
# palette "cubhelix" in categorical format and add the species names as
# annotations for the colorbar
pygmt.makecpt(
cmap="cubhelix",
# Use the minimum and maximum of the categorical number code
# to set the lowest_value and the highest_value of the CPT
series=(df.species.cat.codes.min(), df.species.cat.codes.max(), 1),
# convert ['setosa', 'versicolor', 'virginica'] to
# 'setosa,versicolor,virginica'
color_model="+c" + ",".join(labels),
)
fig.plot3d(
# Use petal width, sepal length, and petal length as x, y, and z
# data input, respectively
x=df.petal_width,
y=df.sepal_length,
z=df.petal_length,
# Vary each symbol size according to another feature (sepal width, scaled
# by 0.1)
size=0.1 * df.sepal_width,
# Use 3-D cubes ("u") as symbols with size in centimeters ("c")
style="uc",
# Points colored by categorical number code
fill=df.species.cat.codes.astype(int),
# Use colormap created by makecpt
cmap=True,
# Set map dimensions (xmin, xmax, ymin, ymax, zmin, zmax)
region=region,
# Set frame parameters
frame=[
"WsNeZ3+tIris flower data set", # z axis label positioned on 3rd corner, add title
"xafg+lPetal Width (cm)",
"yafg+lSepal Length (cm)",
"zafg+lPetal Length (cm)",
],
# Set perspective to azimuth NorthWest (315°), at elevation 25°
perspective=[315, 25],
# Vertical exaggeration factor
zscale=1.5,
)
# Shift plot origin in x direction
fig.shift_origin(xshift=3.1)
# Add colorbar legend
fig.colorbar()
fig.show()