2013-04-17 2 views
3

У меня есть большой набор (100+) скалярных 2D-массивов 256х256. Каждый массив в основном представляет собой срез через трехмерное изображение, и каждый из массивов распределяется равномерно.Python: большой набор 2D-массивов numpy ... как визуализировать в 3D?

Я немного python noob ... какие-нибудь советы о том, как создать приятную трехмерную визуализацию этих данных?

Нужно ли мне скомпоновать мои сканированные массивы более 100+ 2D в большую трехмерную?

Cheers!

+2

Во-первых, вам нужно найти библиотеку, способную делать 3D-визуализацию ... Затем вы следуете их API ... – mgilson

ответ

0

Не совсем уверен, что вы ожидаете от визуализации? Похоже, вы хотите визуализировать функцию 4D?

Вы можете создать трехмерную сетку в пространстве (см., Например, Numpy meshgrid in 3D), а затем использовать значение матрицы/матрицы для окраски точек в диаграмме рассеяния?

Можете быть более конкретными, если вы можете уточнить, что вы хотите видеть.

Edit:

Ну после того, как Ваш комментарий, он по-прежнему звучит как что-то очень трудно представить, но я предполагаю, что вы могли бы сделать что-то подобное (я генерироваться случайными данными, и имеет гораздо меньший размер, чем вы)

import matplotlib as mpl 
from mpl_toolkits.mplot3d import Axes3D 
import numpy as np 
import matplotlib.pyplot as plt 

(X,Y,Z) = np.mgrid[-10:10:25j, -10:10:25j, -10:10:10j] 

col = np.random.rand(25,25,10) 

fig = plt.figure(1) 
fig.clf() 
ax = Axes3D(fig) 

ax.scatter(X,Y,Z, c=col) 

plt.draw() 

plt.show() 

приводит к

enter image description here

внимание, что это может быть немного меньше, бесполезно глядя с неслучайные данные.

+0

Для начала, например, полупрозрачный график рассеяния мог бы сделать трюк. Я использую numpy.dstack для группировки массивов в список. – Draper

+0

Все еще немного запутано. Не уверен, что это будет легко увидеть. Я добавил пример того, как это звучит (для меня), который вы пытаетесь сделать. – thebigdog

1

Вам нужно будет предоставить нам немного больше информации, потому что то, как вы визуализируете это, зависит от того, что вы хотите выбраться из него! Обратите внимание: этот вопрос всегда будет иметь несколько возможных ответов, поскольку вы пытаетесь отобразить информацию, которая по своей сути 3D на вашем 2D-экране.

Один из способов сделать это: create a movie 2D «поверхности» и воспроизвести их. Это в основном просто закладывание всех ваших фрагментов один за другим.

Если вы хотите просмотреть все свои 3D-данные за один раз, вы, скорее всего, не сможете, так как я не знаю никаких объемных инструментов построения шрифтов для Python. Вероятно, самая близкая вещь - MayaVi

Если вы дадите нам больше информации о том, чего вы хотите достичь, с максимально возможной детализацией мы можем указать на более конкретные примеры/ресурсы кода.

+0

Спасибо. Я взял Mayavi, но я не могу найти инструмент для построения простого 3D-скалярного поля! – Draper

+0

Можете ли вы объяснить, что вы подразумеваете под «замыслом простого трехмерного скалярного поля»? Можете ли вы дать нам пример визуализации, демонстрирующий, что вы хотите? – staticfloat

Смежные вопросы