Ich versuche, die klassische HSV-Farbkegel-Matplotlib in Python zu reproduzieren.
Die Idee ist, einen 3D-Kegel im HSV-Raum zu zeichnen, wobei zwei dreieckige Innenflächen entfernt werden, damit wir das Innere des Kegels sehen können.
Alles funktioniert gut, bis auf ein großes Problem:
Ich kann das nicht mitbringen dreieckige Flächen, Pfeile oder Beschriftungen (H, S, V) in den Vordergrund (vorne).
Sie erscheinen immer hinter der Kegeloberfläche, auch wenn ich die Zeichenreihenfolge, Zorder oder set_zsort('max') ändere.
Wie kann ich erzwingen, dass bestimmte Oberflächen, Pfeile und Texte in einem Matplotlib-3D-Plot immer vor allem anderen gerendert werden?
Gibt es eine zuverlässige Möglichkeit:
3D-Oberflächen oben zu zeichnen (dreieckige Flächen),
Köcherpfeile und Beschriftungen zu erstellen immer sichtbar (nicht hinter dem Kegel versteckt),
oder den Z-Puffer / Tiefentest für bestimmte Elemente deaktivieren?
Ich versuche, die klassische HSV-Farbkegel-Matplotlib in Python zu reproduzieren. [img]https://i.sstatic.net/0b7st34C.jpg[/img] Die Idee ist, einen 3D-Kegel im HSV-Raum zu zeichnen, wobei zwei dreieckige Innenflächen entfernt werden, damit wir das Innere des Kegels sehen können. Alles funktioniert gut, bis auf ein großes Problem: Ich kann das nicht mitbringen dreieckige Flächen, Pfeile oder Beschriftungen (H, S, V) in den Vordergrund (vorne). Sie erscheinen immer hinter der Kegeloberfläche, auch wenn ich die Zeichenreihenfolge, Zorder oder set_zsort('max') ändere. [code]import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import hsv_to_rgb
# --------- outer cone ---------- theta = np.linspace(theta0, theta1, n_th) r = np.linspace(0, 1, n_r) TH, R = np.meshgrid(theta, r) Z = R H = (TH % np.pi) / np.pi S = R V = Z RGB = hsv_to_rgb(np.stack((H, S, V), axis=-1)) X = R*np.cos(TH) Y = R*np.sin(TH)
# --------- labels & view ---------- ax.text(0, 0, 1.16, 'V', fontsize=16, fontweight='bold') ax.text(1.22, 0, 0, 'S', fontsize=16, fontweight='bold') ax.text(0.15, 0.6, 1.07, 'H', fontsize=16, fontweight='bold') ax.view_init(elev=25, azim=-55) ax.set_box_aspect([1,1,1]) ax.axis('off') plt.tight_layout() plt.show() [/code] Wie kann ich erzwingen, dass bestimmte Oberflächen, Pfeile und Texte in einem Matplotlib-3D-Plot immer vor allem anderen gerendert werden? Gibt es eine zuverlässige Möglichkeit: [list] [*]3D-Oberflächen oben zu zeichnen (dreieckige Flächen), [*]Köcherpfeile und Beschriftungen zu erstellen immer sichtbar (nicht hinter dem Kegel versteckt), [*]oder den Z-Puffer / Tiefentest für bestimmte Elemente deaktivieren? [/list]
Warum läuft der erste von Matplotlib oder pandas df.plot verarbeitete Plot im Vergleich zu allen nachfolgenden Plots extrem langsam? Dies tritt sogar dann auf, wenn die nachfolgenden Diagramme völlig...
Ich habe eine Funktion, die Numpy-Arrays oder Floats als Eingabe verwenden möchte. Ich möchte eine Operation so lange ausführen, bis ein Fehlermaß unter einem Schwellenwert liegt.
Ein einfaches...
Ich habe RA- und DEC -Zeigendaten, die ich auf einem polaren Diagramm zeigen möchte (Konvertierung in Rho und Theta).
Die Theta -Bewegung ist sehr klein, ~ 0,01 Grad. Dies ist in einem vollständigen...
Wir können die Position von Text in PyPlot angeben, aber wie können wir die Position von Text lesen? Ich möchte zum Beispiel die Koordinaten des Titels der Figur oder die Beschriftungen der Achsen X...