Ich verwende die MayaVi Python-Bibliothek, um 3D-Punkte zu plotten, unter Verwendung der points3d
Klasse. The documentation gibt an, dass die Farbe jeden Punkt durch ein viertes Argument angegeben, s
:Angeben der absoluten Farbe für 3D-Punkte in MayaVi
Darüber hinaus kann man ein viertes Array s von der gleichen Form wie x, y, und z passiert einen zugehörigen Skalarwert geben für jeden Punkt oder eine Funktion f (x, y, z), die den Skalarwert zurückgibt. Dieser skalare Wert kann verwendet werden, um die Farbe und die Größe der Punkte zu modulieren.
dies für jeden Punkt einen skalaren Wert gibt, die den Punkt an einen colourmap wie copper
, jet
oder hsv
abbildet. Z.B. aus ihrer Dokumentation:
import numpy
from mayavi.mlab import *
def test_points3d():
t = numpy.linspace(0, 4*numpy.pi, 20)
cos = numpy.cos
sin = numpy.sin
x = sin(2*t)
y = cos(t)
z = cos(2*t)
s = 2+sin(t)
return points3d(x, y, z, s, colormap="copper", scale_factor=.25)
Gewährt:
Stattdessen würde ich den Ist-Wert für jeden Punkt als (r, g, b) tuple angeben mag. Ist das in MayaVi möglich? Ich habe versucht, die s
mit einem Array von Tupeln zu ersetzen, aber ein Fehler wird ausgelöst.
gibt es eine Möglichkeit, dies zu tun, einen beliebigen 0-255 RGB-Wert zu erzeugen, ohne eine eindeutige colormap mit 256x256x256 Werten zu spezifizieren? Anders ausgedrückt, gibt es in Ihrer Lösung eine Möglichkeit zur Charakterisierung der inversen Spectral() - Funktion, wobei Spectral() eine Funktion mit der Domäne [0,1] und dem Bereich 0-255,0-255,0- ist. 255? Dieses Verhalten hat mich immer verärgert, und ich habe gesehen, dass einige Anwendungen es umgehen (zum Beispiel das vtk-Programm trackvis, dessen Besitzer abgelehnt hat, die Quelle zu mir zu veröffentlichen, damit ich sehen kann, wie er es macht). – aestrivex
Sie können mayavi.core.lut_manager, insbesondere pylab_luts in mayavi.core.lut_manager erkunden, um zu sehen, wie diese gebaut werden (und vermutlich bauen Sie Ihre eigenen und zuweisen, was Sie wollen, Verhalten) – Chrismit
Ich habe mit diesen gespielt. Das Arbeiten mit benutzerdefinierten Luts zum Angeben eines gewünschten Farbschemas ist weitaus weniger allgemein als das Angeben eines eindeutigen RGB-Werts für jeden Vertex, für den ein Skalar angegeben ist. Rechnerisch ist das nicht wahr, weil es möglich ist, eine LUT mit 256x256x256 Werten anzugeben, die das RGB-Farbspektrum eindeutig definiert. Aber es wäre ein außerordentlicher Schmerz, dies tatsächlich zu tun. Ich denke, die richtige Antwort auf diese Frage ist "Entschuldigung, es gibt keinen richtigen Weg, dies zu tun." – aestrivex