本文实例为大家分享了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