2011-10-21 392 views
11

我正在尋找一種使用Python和matplotlib創建四維圖(表面加一個色階)的方法。我能夠使用前三個變量生成曲面,但是我沒有成功添加第四個變量的色階。以下是我的數據的一小部分。任何幫助將不勝感激。由於如何使用Python與matplotlib製作4d圖

的數據子集

var1 var2 var3 var4 
10.39 73.32 2.02 28.26 
11.13 68.71 1.86 27.83 
12.71 74.27 1.89 28.26 
11.46 91.06 1.63 28.26 
11.72 85.38 1.51 28.26 
13.39 78.68 1.89 28.26 
13.02 68.02 2.01 28.26 
12.08 64.37 2.18 28.26 
11.58 60.71 2.28 28.26 
8.94 65.67 1.92 27.04 
11.61 59.57 2.32 27.52 
19.06 74.49 1.69 63.35 
17.52 73.62 1.73 63.51 
19.52 71.52 1.79 63.51 
18.76 67.55 1.86 63.51 
19.84 53.34 2.3  63.51 
20.19 59.82 1.97 63.51 
17.43 57.89 2.05 63.38 
17.9 59.95 1.89 63.51 
18.97 57.84 2  63.51 
19.22 57.74 2.05 63.51 
17.55 55.66 1.99 63.51 
19.22 101.31 6.76 94.29 
19.41 99.47 6.07 94.15 
18.99 94.01 7.32 94.08 
19.88 103.57 6.98 94.58 
19.08 95.38 5.66 94.14 
20.36 100.43 6.13 94.47 
20.13 98.78 7.37 94.47 
20.36 89.36 8.79 94.71 
20.96 84.48 8.33 94.01 
21.02 83.97 6.78 94.72 
19.6 95.64 6.56 94.57 
+0

對不起,該數據沒有正確格式化。它應該閱讀: – Chris

+0

VAR1 10.39 11.13 12.71 11.46 11.72 13.39 13.02 12.08 11.58 8.94 11.61 19.06 17.52 19.52 18.76 19.84 20.19 17.43 17.9 18.97 19.22 17.55 19.22 19.41 18.99 1 9.88 19.08 20.36 20.13 20.36 20.96 21.02 19.6 – Chris

+0

VAR2 73.32 68.71 74.27 91.06 85.38 78.68 68.02 64.37 60.71 65.67 59.57 74.49 73.62 71.52 67.55 53.34 59.82 57.89 59.95 57.84 57.74 55.66 101.31 99.47 94.01 103.57 95.38 100.43 98.78 89.36 84.48 83.97 95.64 – Chris

回答

3

要創建你想要的陰謀,我們需要使用matplotlib的plot_surface繪製Z VS (X,Y)表面,然後用關鍵字參數facecolors在新的顏色以通爲每個補丁。

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

# create some fake data 
x = y = np.arange(-4.0, 4.0, 0.02) 
# here are the x,y and respective z values 
X, Y = np.meshgrid(x, y) 
Z = np.sinc(np.sqrt(X*X+Y*Y)) 
# this is the value to use for the color 
V = np.sin(Y) 

# create the figure, add a 3d axis, set the viewing angle 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.view_init(45,60) 

# here we create the surface plot, but pass V through a colormap 
# to create a different color for each patch 
ax.plot_surface(X, Y, Z, facecolors=cm.Oranges(V)) 

enter image description here

相關問題