パターンを見つけることを望んで、3D で表現しようとしている大量のデータがあります。私は読書、調査、コーディングにかなりの時間を費やしましたが、主な問題はプログラミングではなく、実際にデータを視覚化する方法を選択することであることに気付きました。
Matplotlib の mplot3d は多くのオプション (ワイヤーフレーム、輪郭、塗りつぶされた輪郭など) を提供し、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()
このプロットを取得していますが、相互関係を確認するのに役立ちません.
私は数学者でも科学者でもないので、本当に必要なのは、データを視覚化するための FORMAT を選択することです。これを mplot3d で表示する効果的な方法はありますか? それとも、MayaVis を使用しますか? どちらの場合でも、どのライブラリとクラスを使用しますか?
前もって感謝します。