我有一组大量的数据,希望在3D中呈现出来以便发现模式。我已经花了很多时间阅读、研究和编码,但后来我意识到我的主要问题并不是编程,而是选择一种可视化数据的方法。
Matplotlib的mplot3d提供了许多选项(线框图、轮廓图、填充轮廓等),MayaVi也是如此。但是有这么多选择(每个选择都有自己的学习曲线),我几乎迷失了方向,不知道从哪里开始!所以我的问题本质上是,如果你必须处理这些数据,你会使用哪种绘图方法?
我的数据是基于日期的。对于每个时间点,我绘制一个值(列表“Actual”)。
但是对于每个时间点,我还有一个上限、一个下限和一个中间点。这些限制和中点是基于一个种子,在不同的平面上。
我想在“实际”阅读出现重大变化时或之前发现该点或识别模式。当所有平面上的上限相遇或接近时,是不是发生了这种情况?当实际值触及上/中/下限时,是不是发生了这种情况?当一个平面的上限接触另一个平面的下限时,是不是发生了这种情况?
在我贴出的代码中,我将数据集减少到了只有一些元素。我只使用简单的散点图和线条图,但由于数据集的大小(也许是mplot3d的限制?),我无法用它来发现我正在寻找的趋势。
我看到了这个图表,但它并没有帮助我看到任何相关性。我不是数学家或科学家,所以我真正需要的是帮助选择可视化数据的格式。在mplot3d中是否有有效的方法来展示这个?还是你会使用MayaVis?在任一情况下,你会使用哪个库和类别?谢谢提前的帮助。
Matplotlib的mplot3d提供了许多选项(线框图、轮廓图、填充轮廓等),MayaVi也是如此。但是有这么多选择(每个选择都有自己的学习曲线),我几乎迷失了方向,不知道从哪里开始!所以我的问题本质上是,如果你必须处理这些数据,你会使用哪种绘图方法?
我的数据是基于日期的。对于每个时间点,我绘制一个值(列表“Actual”)。
但是对于每个时间点,我还有一个上限、一个下限和一个中间点。这些限制和中点是基于一个种子,在不同的平面上。
我想在“实际”阅读出现重大变化时或之前发现该点或识别模式。当所有平面上的上限相遇或接近时,是不是发生了这种情况?当实际值触及上/中/下限时,是不是发生了这种情况?当一个平面的上限接触另一个平面的下限时,是不是发生了这种情况?
在我贴出的代码中,我将数据集减少到了只有一些元素。我只使用简单的散点图和线条图,但由于数据集的大小(也许是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()
我看到了这个图表,但它并没有帮助我看到任何相关性。我不是数学家或科学家,所以我真正需要的是帮助选择可视化数据的格式。在mplot3d中是否有有效的方法来展示这个?还是你会使用MayaVis?在任一情况下,你会使用哪个库和类别?谢谢提前的帮助。