2011-10-21 30 views
11

Tôi đang tìm cách tạo các ô bốn chiều (bề mặt cộng với thang màu) bằng Python và matplotlib. Tôi có thể tạo ra bề mặt bằng cách sử dụng ba biến đầu tiên, nhưng tôi không có thành công thêm thang màu cho biến thứ tư. Dưới đây là một tập hợp nhỏ dữ liệu của tôi bên dưới. Mọi sự trợ giúp sẽ rất được trân trọng. Cảm ơnCách tạo một ô 4d bằng Python với matplotlib

dữ liệu tập hợp con

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

Xin lỗi, dữ liệu không định dạng đúng. Nó nên đọc: – 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

Trả lời

3

Để tạo cốt truyện mà bạn muốn, chúng ta cần phải sử dụng matplotlib của plot_surface để vẽ Z vs (X,Y) bề mặt, và sau đó sử dụng đối số từ khóa facecolors để vượt qua trong một màu sắc mới cho mỗi miếng vá .

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

Các vấn đề liên quan