Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Textrotationsmodus #
Dieses Beispiel veranschaulicht die Auswirkung von rotation_mode
auf die Positionierung von gedrehtem Text.
Gedrehte Text
s werden erstellt, indem der Parameter rotation
an den Konstruktor oder die Methode der Achsen übergeben wird text
.
Die tatsächliche Positionierung hängt von den zusätzlichen Parametern
horizontalalignment
, verticalalignment
und ab rotation_mode
.
rotation_mode
bestimmt die Reihenfolge der Drehung und Ausrichtung:
rotation_mode='default'
(oder Keine) dreht zuerst den Text und richtet dann den Begrenzungsrahmen des gedrehten Textes aus.rotation_mode='anchor'
richtet den nicht gedrehten Text aus und dreht den Text dann um den Ausrichtungspunkt.
import matplotlib.pyplot as plt
def test_rotation_mode(fig, mode):
ha_list = ["left", "center", "right"]
va_list = ["top", "center", "baseline", "bottom"]
axs = fig.subplots(len(va_list), len(ha_list), sharex=True, sharey=True,
subplot_kw=dict(aspect=1),
gridspec_kw=dict(hspace=0, wspace=0))
# labels and title
for ha, ax in zip(ha_list, axs[-1, :]):
ax.set_xlabel(ha)
for va, ax in zip(va_list, axs[:, 0]):
ax.set_ylabel(va)
axs[0, 1].set_title(f"rotation_mode='{mode}'", size="large")
kw = (
{} if mode == "default" else
{"bbox": dict(boxstyle="square,pad=0.", ec="none", fc="C1", alpha=0.3)}
)
texts = {}
# use a different text alignment in each axes
for i, va in enumerate(va_list):
for j, ha in enumerate(ha_list):
ax = axs[i, j]
# prepare axes layout
ax.set(xticks=[], yticks=[])
ax.axvline(0.5, color="skyblue", zorder=0)
ax.axhline(0.5, color="skyblue", zorder=0)
ax.plot(0.5, 0.5, color="C0", marker="o", zorder=1)
# add text with rotation and alignment settings
tx = ax.text(0.5, 0.5, "Tpg",
size="x-large", rotation=40,
horizontalalignment=ha, verticalalignment=va,
rotation_mode=mode, **kw)
texts[ax] = tx
if mode == "default":
# highlight bbox
fig.canvas.draw()
for ax, text in texts.items():
bb = text.get_window_extent().transformed(ax.transData.inverted())
rect = plt.Rectangle((bb.x0, bb.y0), bb.width, bb.height,
facecolor="C1", alpha=0.3, zorder=2)
ax.add_patch(rect)
fig = plt.figure(figsize=(8, 5))
subfigs = fig.subfigures(1, 2)
test_rotation_mode(subfigs[0], "default")
test_rotation_mode(subfigs[1], "anchor")
plt.show()
Verweise
In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt: