Как бы вы представили следующие трехмерные данные в Matplotlib или Mayavi?

У меня есть большой набор данных, которые я пытаюсь представить в 3D, надеясь обнаружить закономерность. . Я провел довольно много времени за чтением, исследованием и кодированием, но потом понял, что моя главная проблема НЕ в программировании, а на самом деле в выборе способа визуализации данных.

mplot3d от Matplotlib предлагает множество опций (каркас, контур, контур с заливкой и т. д.), как и MayaVi. Но есть так много вариантов (и каждый со своей кривой обучения), что я практически теряюсь и не знаю, с чего начать! Итак, мой вопрос, по сути, заключается в том, какой метод построения графика ВЫ бы использовали, если бы вам пришлось иметь дело с этими данными?

Мои данные основаны на дате. Для каждого момента времени я рисую значение (список «Фактическое»).

Но для каждого момента времени у меня также есть Верхний предел, Нижний предел и точка среднего диапазона. Эти пределы и средние точки основаны на семени, в разных плоскостях.

Я хочу отметить точку или определить закономерность, когда или до того, как в моем «фактическом» чтении произойдет серьезное изменение. Когда встречаются верхние пределы на всех планах? Или подойти друг к другу? Это когда фактическое значение касается верхнего/среднего/нижнего предела? Когда Верхние в одном плане соприкасаются с Нижними в другом плане?

В коде, который я вставляю, я сократил набор данных до нескольких элементов.Я просто использую простые точечные и линейные графики, но из-за размера набора данных (и, возможно, ограничений mplot3d?) я не могу использовать его для определения искомых трендов.

dates = [20110101,20110104,20110105,20110106,20110107,20110108,20110111,20110112]

zAxis0= [       0,       0,       0,       0,       0,       0,       0,       0]
Actual= [    1132,    1184,    1177,     950,    1066,    1098,    1116,    1211]

zAxis1= [       1,       1,       1,       1,       1,       1,       1,       1]
Tops1 = [    1156,    1250,    1156,    1187,    1187,    1187,    1156,    1156]
Mids1 = [    1125,    1187,    1125,    1156,    1156,    1156,    1140,    1140]
Lows1 = [    1093,    1125,    1093,    1125,    1125,    1125,    1125,    1125]

zAxis2= [       2,       2,       2,       2,       2,       2,       2,       2]
Tops2 = [    1125,    1125,    1125,    1125,    1125,    1250,    1062,    1250]
Mids2 = [    1062,    1062,    1062,    1062,    1062,    1125,    1000,    1125]
Lows2 = [    1000,    1000,    1000,    1000,    1000,    1000,     937,    1000]

zAxis3= [       3,       3,       3,       3,       3,       3,       3,       3]
Tops3 = [    1250,    1250,    1250,    1250,    1250,    1250,    1250,    1250]
Mids3 = [    1187,    1187,    1187,    1187,    1187,    1187,    1187,    1187]
Lows3 = [    1125,    1125,    1000,    1125,    1125,    1093,    1093,    1000]

import matplotlib.pyplot
from mpl_toolkits.mplot3d import Axes3D

fig = matplotlib.pyplot.figure()
ax  = fig.add_subplot(111, projection = '3d')

#actual values
ax.scatter(dates, zAxis0, Actual, color = 'c', marker = 'o')

#Upper limits, Lower limts, and Mid-range for the FIRST plane
ax.plot(dates, zAxis1, Tops1, color = 'r')
ax.plot(dates, zAxis1, Mids1, color = 'y')
ax.plot(dates, zAxis1, Lows1, color = 'b')

#Upper limits, Lower limts, and Mid-range for the SECOND plane
ax.plot(dates, zAxis2, Tops2, color = 'r')
ax.plot(dates, zAxis2, Mids2, color = 'y')
ax.plot(dates, zAxis2, Lows2, color = 'b')

#Upper limits, Lower limts, and Mid-range for the THIRD plane
ax.plot(dates, zAxis3, Tops3, color = 'r')
ax.plot(dates, zAxis3, Mids3, color = 'y')
ax.plot(dates, zAxis3, Lows3, color = 'b')

#These two lines are just dummy data that plots transparent circles that
#occpuy the "wall" behind my actual plots, so that the last plane appears
#floating in 3D rather than being pasted to the plot's background
zAxis4= [       4,       4,       4,       4,       4,       4,       4,       4]
ax.scatter(dates, zAxis4, Actual, color = 'w', marker = 'o', alpha=0)

matplotlib.pyplot.show()

Я понимаю этот сюжет, но он просто не помогает мне увидеть взаимосвязь.

enter image description here Я не математик и не ученый, поэтому мне действительно нужна помощь в выборе ФОРМАТ для визуализации моих данных. Есть ли эффективный способ показать это в mplot3d? Или вы бы использовали MayaVis? В любом случае, какую библиотеку и класс(ы) вы бы использовали?

Заранее спасибо.

7
задан Zambi 27 May 2012 в 18:48
поделиться