matplotlib
Coördinaten Systemen
Zoeken…
Opmerkingen
Matplotlib heeft vier verschillende coördinatensystemen die kunnen worden gebruikt om de positionering van verschillende objecten, bijvoorbeeld tekst, te vergemakkelijken. Elk systeem heeft een overeenkomstig transformatieobject dat coördinaten transformeert van dat systeem naar het zogenaamde weergavecoördinatenstelsel.
Gegevenscoördinatenstelsel is het systeem dat wordt gedefinieerd door de gegevens op de respectieve assen. Dit is handig wanneer u een object ten opzichte van de geplotte gegevens probeert te positioneren. Het bereik wordt gegeven door de xlim
en ylim
eigenschappen van Axes
. Het bijbehorende transformatieobject is ax.transData
.
Assen coördinatensysteem is het systeem dat is gekoppeld aan het Axes
object. Punten (0, 0) en (1, 1) definiëren de hoeken linksonder en rechtsboven van de assen. Als zodanig is het handig bij het positioneren ten opzichte van de assen, zoals bovenaan in het midden van de plot. Het overeenkomstige transformatie object ax.transAxes
.
Figuurcoördinatenstelsel is analoog aan het assencoördinatenstelsel, behalve dat het is gekoppeld aan de Figure
. Punten (0, 0) en (1, 1) vertegenwoordigen de hoeken linksonder en rechtsboven in de figuur. Dit is handig wanneer u iets probeert te positioneren ten opzichte van de hele afbeelding. Het bijbehorende transformatieobject is fig.transFigure
.
Weergavecoördinatensysteem is het systeem van de afbeelding in pixels. Punten (0, 0) en (breedte, hoogte) zijn de pixels linksonder en rechtsboven in de afbeelding of weergave. Het kan absoluut worden gebruikt voor positionering. Aangezien transformatieobjecten coördinaten in dit coördinatensysteem transformeren, is aan het weergavesysteem geen transformatieobject gekoppeld. None
of matplotlib.transforms.IdentityTransform()
kan echter indien nodig worden gebruikt.
Meer details zijn hier beschikbaar.
Coördinatenstelsels en tekst
De coördinatensystemen van Matplotlib zijn erg handig bij het annoteren van de plots die u maakt. Soms wilt u tekst relatief ten opzichte van uw gegevens plaatsen, bijvoorbeeld wanneer u een specifiek punt probeert te labelen. Soms wilt u misschien een tekst bovenop de figuur toevoegen. Dit kan eenvoudig worden bereikt door een geschikt coördinatensysteem te selecteren door een transformatieobject door te geven aan de transform
in aanroep naar text()
.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([2.], [3.], 'bo')
plt.text( # position text relative to data
2., 3., 'important point', # x, y, text,
ha='center', va='bottom', # text alignment,
transform=ax.transData # coordinate system transformation
)
plt.text( # position text relative to Axes
1.0, 1.0, 'axes corner',
ha='right', va='top',
transform=ax.transAxes
)
plt.text( # position text relative to Figure
0.0, 1.0, 'figure corner',
ha='left', va='top',
transform=fig.transFigure
)
plt.text( # position text absolutely at specific pixel on image
200, 300, 'pixel (200, 300)',
ha='center', va='center',
transform=None
)
plt.show()