本文实例为大家分享了python matlibplot绘制3d图形的具体代码,供大家参考,具体内容如下
1、散点图使用scatter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
from mpl_toolkits.mplot3d import axes3d import numpy as np from matplotlib import pyplot as plt # 生成3d示例数据 mu_vec1 = np.array([ 0 , 0 , 0 ]) # 均值向量 cov_mat1 = np.array([[ 1 , 0 , 0 ],[ 0 , 1 , 0 ],[ 0 , 0 , 1 ]]) # 协方差矩阵 class1_sample = np.random.multivariate_normal(mu_vec1, cov_mat1, 20 ) class2_sample = np.random.multivariate_normal(mu_vec1 + 1 , cov_mat1, 20 ) class3_sample = np.random.multivariate_normal(mu_vec1 + 2 , cov_mat1, 20 ) # class1_sample.shape -> (20, 3), 20 rows, 3 columns fig = plt.figure(figsize = ( 8 , 8 )) ax = fig.add_subplot( 111 , projection = '3d' ) ax.scatter(class1_sample[:, 0 ], class1_sample[:, 1 ], class1_sample[:, 2 ], marker = 'x' , color = 'blue' , s = 40 , label = 'class 1' ) ax.scatter(class2_sample[:, 0 ], class2_sample[:, 1 ], class2_sample[:, 2 ], marker = 'o' , color = 'green' , s = 40 , label = 'class 2' ) ax.scatter(class3_sample[:, 0 ], class3_sample[:, 1 ], class3_sample[:, 2 ], marker = '^' , color = 'red' , s = 40 , label = 'class 3' ) ax.set_xlabel( 'variable x' ) ax.set_ylabel( 'variable y' ) ax.set_zlabel( 'variable z' ) plt.title( '3d scatter plot' ) plt.show() |
2、直线使用plot3d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np from itertools import product, combinations fig = plt.figure(figsize = ( 7 , 7 )) ax = fig.gca(projection = '3d' ) ax.set_aspect( "equal" ) # 画点 # 立方体里的点 x_inside = np.array([[ 0 , 0 , 0 ],[ 0.2 , 0.2 , 0.2 ],[ 0.1 , - 0.1 , - 0.3 ]]) x_outside = np.array([[ - 1.2 , 0.3 , - 0.3 ],[ 0.8 , - 0.82 , - 0.9 ],[ 1 , 0.6 , - 0.7 ], [ 0.8 , 0.7 , 0.2 ],[ 0.7 , - 0.8 , - 0.45 ],[ - 0.3 , 0.6 , 0.9 ], [ 0.7 , - 0.6 , - 0.8 ]]) for row in x_inside: ax.scatter(row[ 0 ], row[ 1 ], row[ 2 ], color = "r" , s = 50 , marker = '^' ) for row in x_outside: ax.scatter(row[ 0 ], row[ 1 ], row[ 2 ], color = "k" , s = 50 ) # 画立方体 h = [ - 0.5 , 0.5 ] for s, e in combinations(np.array( list (product(h,h,h))), 2 ): if np. sum (np. abs (s - e)) = = h[ 1 ] - h[ 0 ]: ax.plot3d( * zip (s,e), color = "g" ) ax.set_xlim( - 1.5 , 1.5 ) ax.set_ylim( - 1.5 , 1.5 ) ax.set_zlim( - 1.5 , 1.5 ) plt.show() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/yewuqingxuan/article/details/74732945