Ich habe Schwierigkeiten mit der Textausrichtung in Pyplot. Ich versuche, kreisförmig angeordnete Punkte in einem kreisförmigen Dendrogramm zu kommentieren, daher ist es wichtig, dass die Markierungen von den Punkten weg zeigen und den rechten Winkel beibehalten. Hier ist der relevante Teil von dem, was ich bisher habe. Ausrichten von Etiketten in einem Kreis in Matplotlib
Die horizontalen Etiketten funktionieren wie ein Charme, aber die vertikalen sind offensichtlich ausgeschaltet. Es scheint, dass horizontalalignment
/verticalalignment
auf die ursprünglichen Koordinaten und auf die Bounding-Box angewendet wird. Gibt es eine Möglichkeit/Möglichkeit, die Etiketten richtig auszurichten, ohne einige verrückte Stunts durchzuführen, z. B. die Texthöhe herauszufinden und die Etiketten entsprechend zu verschieben. Ich habe mich gefragt, ob es sinnvoll wäre, eine zweite Parzelle/Achse mit Polarkoordinaten zu überlagern und den Text darauf zu setzen, aber ich bin mir nicht sicher, ob mich das irgendwohin führen wird. Oder ob ich fehle etwas wirklich offensichtlich ...
Hier ist ein minimales Arbeitsbeispiel:
import matplotlib.pyplot as plt
(fig, ax) = plt.subplots(figsize = (4,4))
def kex(N):
alpha = 360./N
coordX = []
coordY = []
alphas = []
for i in range(0,N):
alpha_loop = alpha * i
coordX.append(math.cos(math.radians(alpha_loop)))
coordY.append(math.sin(math.radians(alpha * i)))
alphas.append(alpha_loop)
return [coordX, coordY, alphas]
N = 10
points = kex(N)
ax.scatter(points[0], points[1])
for i in range(0,N):
x = points[0][i]
y = points[1][i]
a = points[2][i]
if x > 0:
ax.text(x + x * 0.1, y + y * 0.1, "AAA", rotation = a,
bbox=dict(facecolor = "none", edgecolor ="red"))
else:
ax.text(x + x * 0.1, y + y * 0.1, "AAA", rotation = a - 180,
bbox=dict(facecolor = "none", edgecolor ="red"), ha = "right")
ax.axis("off")
plt.show()
Jede Hilfe ist willkommen!
Siehe auch http://stackoverflow.com/questions/43894987/networkx-node-labels-relative-position – ImportanceOfBeingErnest