'daki 3D noktalar için mutlak rengi belirtin points3d
sınıfını kullanarak 3d noktaları çizmek için MayaVi Python kitaplığını kullanıyorum. The documentation her noktanın renk, dördüncü bir bağımsız değişken ile s
belirtilen belirtir:MichaelVi
Buna ek olarak, dördüncü bir dizi s x, y ve z ilişkili bir skaler değeri veren ile aynı şekilde geçebilir Her bir nokta için veya skaler değeri döndüren bir f (x, y, z) fonksiyonu. Bu skaler değer, noktaların rengini ve boyutunu değiştirmek için kullanılabilir.
Bu colourmap 'ın eşler her bir nokta, bir skaler değerini belirtir, örneğin copper
, jet
veya hsv
. Örneğin. bunların belgelere:
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)
verir:
Bunun yerine, bir (R, G, B) başlığın olarak her bir nokta için, gerçek değerini belirtmek istiyoruz. Bu MayaVi'de mümkün mü? s
'u bir dizi tuple değiştirmeyi denedim, ancak bir hata atıldı.
256x256x256 değer içeren benzersiz renk haritası belirtmeden, keyfi bir 0-255 RGB değerini üretmek için bunu yapmanın bir yolu var mı? Çözümünüzde, Spectral() alanının [0,1] ve 0-255,0-255,0 aralığındaki bir işlev olduğu ters Spectral() işlevini karakterize etmenin bir yolu var mı? 255? Bu davranış her zaman bana irked etti ve bazı uygulamalar görüyorlar (örneğin, sahibi bana kaynağı serbest bırakmak reddetti vtk program trackvis, bu yüzden nasıl yaptığını görebilirsiniz). – aestrivex
mayavi.core.lut_manager'ı, özellikle de pyab.lut_manager'i mayavi.core.lut_manager içinde bulabilir ve bunların nasıl yapıldığını görebilirsiniz (ve muhtemelen kendi isteğinizi inşa edip istediğiniz herhangi bir davranışla atayabilirsiniz). – Chrismit
Bunlarla oynadım. İstenilen renk şemasını belirtmek için özel lutlarla çalışmak, bir skaler belirtildiğinde her köşe noktası için benzersiz bir RGB değeri belirtmekten çok daha genel bir çözümdür. Bu doğru olmayan hesaplama, çünkü RGB renk yelpazesini benzersiz olarak tanımlayan 256x256x256 değerleriyle LUT belirtmek mümkündür. Ama aslında bunu yapmak sıra dışı bir acı olur. Bence bu sorunun doğru cevabı "üzgünüm, bunu yapmanın doğru yolu yoktur." – aestrivex