Mayavi: Mayavi tidak mendukung tupel RGB sebagai data titik

Dibuat pada 22 Nov 2013  ·  9Komentar  ·  Sumber: enthought/mayavi

Dalam vtk murni dimungkinkan untuk memiliki permukaan di mana point_data.scalars adalah vtkUnsignedCharArray. Penyaji akan menafsirkan ini sebagai memberikan nilai RGB atau RGBA yang berbeda untuk setiap titik dan mewarnai permukaan sesuai dengan itu jika pengaturan sudah diatur. Objek Mayavi tidak mengizinkan Anda melakukan ini sama sekali karena objek tersebut tidak pernah menyiapkan vtkUnsignedCharArrays.

Akhirnya, akan lebih baik untuk memilikinya sehingga jika pengguna menentukan tupel RGB atau RGBA yang valid sebagai skalar ke fungsi mlab, warna pada setiap titik akan sesuai dengan skalar.

Komentar yang paling membantu

Tak satu pun dari jawaban itu sendiri yang benar-benar melakukan apa yang saya inginkan, tetapi akhirnya saya menemukan jawabannya dengan menggabungkannya :)

# 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

Semua 9 komentar

Pengembang inti Mayavi cukup sibuk di tempat lain. Saya takut itu untuk
permintaan fitur ini terjadi, orang lain harus turun tangan
dan kode.

Itu cukup baik. Saya bermaksud itu sebagai permintaan fitur untuk masa depan, saya tahu ini adalah pekerjaan yang cukup banyak. Ini adalah sesuatu yang akan saya coba kerjakan, jika saya dapat menemukan waktu.

Terima kasih banyak karena begitu pengertian. Cukup jelas tenaga kerja di
Mayavi tidak cukup untuk memenuhi semua potensinya.

@GaelVaroquaux akan segera ada pendanaan untuk proyek ini (mulai Q2 tahun depan) !

Saya telah membenturkan kepala saya ke dinding khusus ini untuk sebagian besar hari ini -- menentukan daftar poin dalam hal array [x, y, z, ukuran, warna] sepertinya fitur yang jelas! Mengapa ada orang yang ingin ukuran poin dikunci dengan warna poin?!

Kumpulan persyaratan Anda mungkin sama dengan persyaratan orang lain. Mayavi dibangun di atas
VTK, yang telah dibuat sebagai perangkat visualisasi umum untuk ditampilkan
kaya terus-menerus bervariasi data. Ia cenderung menganggap hal-hal sebagai abstrak
kuantitas yang harus dipetakan ke properti visual objek. Suka itu
atau tidak, kita cukup terikat untuk itu.

Meskipun demikian, memisahkan ukuran dan warna dengan mudah dapat dilakukan dengan sedikit
retas: Item terakhir di paragraf berikut
http://docs.enthought.com/mayavi/mayavi/mlab.html#adding -color-or-size-variations

Terima kasih atas balasan cepatnya. Sayangnya, ini adalah batasan utama dalam hal kemampuan Mayavi untuk memplot data ilmiah (lihat misalnya utas ini , menampilkan kutipan "Saya juga mengambil posisi janin dan mulai menangis setelah saya menyadari bahwa API tidak memiliki cara yang jelas/default untuk warna khusus", yang merangkum perasaan saya dengan tepat!). Tampaknya fitur ini dimungkinkan di VTK (mis. this ), meskipun mungkin tidak mudah untuk diterjemahkan ke Mayavi.

(Kedengarannya seperti Anda sudah familiar dengan apa yang saya coba lakukan di sini -- saya ingin menggunakan warna yang berbeda untuk setiap populasi neuron yang berbeda dalam model 3D korteks.)

Hai Tebing,

Tidak ada api yang bagus untuk ini, tetapi ada beberapa solusi untuk melakukannya.

Baik dengan menggunakan array char unsigned tvtk seperti yang saya sarankan pada awalnya di sini

(Lihat
http://stackoverflow.com/questions/19431099/how-to-directly-set-rgb-rgba-colors-in-mayavi,
rumit untuk sumber mayavi tertentu)

Atau dengan menyiapkan tabel warna besar yang menampung setiap kemungkinan nilai RGB.

(lihat jawaban oleh pengguna eqzx,
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi?rq=3
)

Pada Jumat, 15 Mei, 2015 01:26, Cliff Kerr [email protected]
menulis:

Terima kasih atas balasan cepatnya. Sayangnya, ini adalah batasan utama dalam
hal kemampuan Mayavi untuk merencanakan data ilmiah (lihat misalnya utas ini
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi,
menampilkan kutipan "Saya juga mengambil posisi janin dan mulai menangis
setelah saya menyadari bahwa API tidak memiliki cara kustom yang jelas/default
warna", yang merangkum perasaan saya dengan tepat!). Sepertinya fiturnya adalah
mungkin di VTK (misalnya, ini
http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/ColoredPoints),
meskipun mungkin tidak mudah untuk menerjemahkan ke Mayavi.


Balas email ini secara langsung atau lihat di GitHub
https://github.com/enthought/mayavi/issues/92#issuecomment -102463748.

Tak satu pun dari jawaban itu sendiri yang benar-benar melakukan apa yang saya inginkan, tetapi akhirnya saya menemukan jawabannya dengan menggabungkannya :)

# 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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat