Mayavi: لا يدعم Mayavi مجموعات RGB كبيانات نقطية

تم إنشاؤها على ٢٢ نوفمبر ٢٠١٣  ·  9تعليقات  ·  مصدر: enthought/mayavi

في vtk الخالص ، من الممكن أن يكون لديك أسطح حيث تكون point_data.scalars عبارة عن vtkUnsignedCharArray. سوف يفسر العارض هذا على أنه يوفر قيمة RGB أو RGBA مميزة لكل رأس ويلون السطح وفقًا لذلك إذا تم إعداد الإعدادات. لا تسمح لك كائنات Mayavi بالقيام بذلك على الإطلاق لأنها لم تقم أبدًا بإعداد vtkUnsignedCharArrays.

في النهاية ، سيكون من الجيد الحصول عليه بحيث إذا حدد المستخدم مجموعات RGB أو RGBA صالحة كوظائف قياسية إلى وظائف mlab ، فإن الألوان في كل نقطة ستتوافق مع الحجميات.

التعليق الأكثر فائدة

لم تفعل أي من هذه الإجابات بمفردها ما أريده حقًا ، لكنني اكتشفت ذلك في النهاية من خلال الجمع بينهما :)

# 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()

snapshot

ال 9 كومينتر

مطورو Mayavi الأساسيون مشغولون جدًا في مكان آخر. أنا خائف من ذلك
سيحدث طلب الميزة هذا ، وسيتعين على شخص آخر التدخل
والرمز.

هذا جيد على نحو تام. لقد قصدته كطلب ميزة للمستقبل ، وأنا أعلم أنه قدر كبير من العمل. إنه شيء سأحاول العمل عليه ، إذا وجدت الوقت.

شكرا جزيلا لكونك متفهم من الواضح تماما أن القوى العاملة على
مايافي ليست كافية لتلبية كل إمكاناتها.

GaelVaroquaux سيكون هناك بعض التمويل للمشروع قريبًا (يبدأ الربع الثاني من العام المقبل)!

لقد كنت أضرب رأسي بهذا الجدار المعين لمعظم اليوم - يبدو أن تحديد قائمة بالنقاط من حيث مصفوفات [x ، y ، z ، الحجم ، اللون] مثل هذه الميزة الواضحة! لماذا يريد أي شخص أن يتم قفل حجم النقاط على لون النقاط ؟!

قد تكون مجموعة المتطلبات الخاصة بك هي تلك الخاصة بالآخرين. بنيت على مايافي
VTK ، الذي تم إنشاؤه كمجموعة أدوات تصور عام لعرضها
بيانات غنية متغيرة باستمرار. يميل إلى اعتبار الأشياء مجردة
الكميات التي يجب تعيينها للخصائص المرئية للأشياء. يعجب ب
أم لا ، فنحن ملتزمون به إلى حد كبير.

ومع ذلك ، يمكن فصل الحجم واللون بسهولة باستخدام القليل من ملف
الاختراق: العنصر الأخير في الفقرة التالية
http://docs.enthought.com/mayavi/mayavi/mlab.html#adding -color-or-size-variations

شكرا على الرد السريع. لسوء الحظ ، يعد هذا قيدًا كبيرًا من حيث قدرة Mayavi على رسم البيانات العلمية (انظر على سبيل المثال هذا الموضوع ، الذي يعرض الاقتباس "لقد اتخذت أيضًا موضع الجنين وبدأت في البكاء بعد أن أدركت أن واجهة برمجة التطبيقات ليس لديها أي طريقة واضحة / افتراضية ألوان مخصصة "، والتي تلخص شعوري بالضبط!). يبدو أن الميزة ممكنة في VTK (على سبيل المثال ، هذا ) ، على الرغم من أنه قد لا يكون من السهل الترجمة إلى Mayavi.

(بالمناسبة ، يبدو أنك على دراية بما أحاول القيام به هنا - أريد استخدام ألوان مختلفة لكل مجموعة مختلفة من الخلايا العصبية في نموذج ثلاثي الأبعاد للقشرة).

مرحبًا كليف ،

لا توجد واجهة برمجة تطبيقات جيدة لهذا ، ولكن هناك بعض الحلول للقيام بذلك.

إما باستخدام مصفوفة حرف غير موقعة من tvtk كما اقترحت هنا في البداية

(ارى
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
)

يوم الجمعة ، 15 مايو 2015 ، الساعة 1:26 مساءً ، Cliff Kerr [email protected]
كتب:

شكرا على الرد السريع. لسوء الحظ ، إنه قيد رئيسي في
شروط قدرة Mayavi على رسم البيانات العلمية (انظر على سبيل المثال هذا الموضوع
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) ،
على الرغم من أنه قد لا يكون من السهل الترجمة إلى Mayavi.

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على 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()

snapshot

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

GaelVaroquaux picture GaelVaroquaux  ·  13تعليقات

ktavabi picture ktavabi  ·  15تعليقات

anntzer picture anntzer  ·  7تعليقات

igamenovoer picture igamenovoer  ·  7تعليقات

Kekushke picture Kekushke  ·  9تعليقات