純粋なvtkでは、point_data.scalarsがvtkUnsignedCharArrayであるサーフェスを持つことができます。 レンダラーは、これを各頂点に個別のRGBまたはRGBA値を提供するものとして解釈し、設定が設定されている場合はそれに応じてサーフェスに色を付けます。 Mayaviオブジェクトは、vtkUnsignedCharArraysを設定しないため、これをまったく実行できません。
最終的には、ユーザーが有効なRGBまたはRGBAタプルをmlab関数のスカラーとして指定した場合に、各ポイントの色がスカラーに一致するようにすると便利です。
マヤビのコア開発者は他の場所で非常に忙しいです。 私はそれを恐れています
この機能のリクエストが発生すると、他の誰かが介入する必要があります
とコード。
大丈夫です。 将来の機能リクエストとして意図していたのですが、かなりの作業量だと思います。 時間があれば、頑張っていきたいと思います。
ご理解のほどよろしくお願いいたします。 非常に明確に労働力
マヤビはそのすべての可能性を満たすのに十分ではありません。
@GaelVaroquauxはまもなくプロジェクトにいくらかの資金が提供される予定です(来年の第2四半期から)!
私は今日のほとんどの間、この特定の壁に頭をぶつけてきました-[x、y、z、サイズ、色]の配列の観点からポイントのリストを指定することは、そのような明白な機能のようです! ポイントのサイズをポイントの色に固定したいのはなぜですか?!
あなたの一連の要件は、他の要件のそれかもしれません。 マヤビは上に構築されています
表示する一般的な視覚化ツールキットとして作成されたVTK
豊富な連続変化データ。 それは物事を抽象的なものと見なす傾向があります
オブジェクトの視覚的プロパティにマップする必要がある量。 いいね
かどうかにかかわらず、私たちはそれにかなり拘束されています。
とは言うものの、サイズと色の分離は少しの
ハック:次の段落の最後の項目
http://docs.enthought.com/mayavi/mayavi/mlab.html#adding -color-or-size-variations
こんにちはクリフ、
これに適したAPIはありませんが、それを行うためのいくつかの回避策があります。
私が最初にここで提案したように、tvtk unsignedchar配列を使用することによって
(見る
http://stackoverflow.com/questions/19431099/how-to-directly-set-rgb-rgba-colors-in-mayavi、
特定のマヤビソースでは複雑です)
または、可能なすべてのRGB値を保持する大きなカラーテーブルを設定します。
(ユーザーeqzxによる回答を参照してください。
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi?rq=3
)。
13:26時金、2015年5月15日には、クリフカー[email protected]
書きました:
早速のお返事ありがとうございます。 残念ながら、それはの主要な制限です
科学的データをプロットするマヤビの能力の条件(例えば、このスレッドを参照)
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi、
「私も胎児の位置を取り、泣き始めました
APIに明確な/デフォルトのカスタム方法がないことに気付いた後
私の気持ちを正確にまとめた「色」!)の特徴のようです。
VTKで可能(例えば、これ
http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/ColoredPoints)、
マヤビに翻訳するのは簡単ではないかもしれませんが。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/enthought/mayavi/issues/92#issuecomment-102463748 。
それらの答えのどちらもそれ自体では本当に私が望んでいたことをしませんでした、しかし最終的に私はそれらを組み合わせることによってそれを理解しました:)
# Imports
import numpy as np
from mayavi.mlab import quiver3d, draw
# Primitives
N = 200 # Number of points
ones = np.ones(N)
scalars = np.arange(N) # Key point: set an integer for each point
# Define color table (including alpha), which must be uint8 and [0,255]
colors = (np.random.random((N, 4))*255).astype(np.uint8)
colors[:,-1] = 255 # No transparency
# Define coordinates and points
x, y, z = colors[:,0], colors[:,1], colors[:,2] # Assign x, y, z values to match color
pts = quiver3d(x, y, z, ones, ones, ones, scalars=scalars, mode='sphere') # Create points
pts.glyph.color_mode = 'color_by_scalar' # Color by scalar
# Set look-up table and redraw
pts.module_manager.scalar_lut_manager.lut.table = colors
draw()
最も参考になるコメント
それらの答えのどちらもそれ自体では本当に私が望んでいたことをしませんでした、しかし最終的に私はそれらを組み合わせることによってそれを理解しました:)