本文实例讲述了Python使用matplotlib绘制三维图形。分享给大家供大家参考,具体如下:
用二维泡泡图表示三维数据
泡泡的坐标2维,泡泡的大小三维,使用到的函数
1
2
|
plt.scatter(P[:, 0 ], P[:, 1 ], s = S, lw = 1.5 ,
edgecolors = C, facecolors = 'None' )
|
其中P[:,0], P[:,1]为泡泡的坐标数据,s为泡泡的大小,lw为泡泡的边线宽度,edgecolors为边线颜色,facecolors为填充颜色
代码及注释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize = ( 9 , 6 ))
# 泡泡的数量
n = 50
size_min = 50
size_max = 50 * 50
# Ring position,rand可以产生2维数组
P = np.random.rand(n, 2 )
# Ring colors R,G,B,A
C = np.ones((n, 4 )) * ( 0 , 0 , 0 , 1 )
# Alpha color channel goes from 0 (transparent) to 1 (opaque)
C[:, 3 ] = np.linspace( 0 , 1 ,n)
# Ring sizes
S = np.linspace(size_min, size_max, n)
# Scatter plot
plt.scatter(P[:, 0 ], P[:, 1 ], s = S, lw = 1.5 ,
edgecolors = C, facecolors = 'None' )
#range只能排列出整数,在排列小数时可以用到np.arange
plt.xlim( 0 , 1 ), plt.xticks(np.arange( 0 , 1.1 , 0.1 ))
plt.ylim( 0 , 1 ), plt.yticks(np.arange( 0 , 1.1 , 0.1 ))
plt.show()
|
运行结果:
三维螺旋线图
需要导入三维工具mplot3d
1
|
from mpl_toolkits.mplot3d import Axes3D
|
导入了这个工具后才能在add_subplot时添加参数
1
|
projection = '3d'
|
完整代码及注释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# -*- coding:utf-8 -*-
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams[ 'font.sans-serif' ] = [ 'SimHei' ] #防止中文乱码
fig = plt.figure(figsize = ( 9 , 6 ))
#添加参数projection
ax = fig.add_subplot( 111 ,projection = '3d' )
z = np.linspace( 0 , 6 , 1000 )
r = 1
x = r * np.sin(np.pi * 2 * z)
y = r * np.cos(np.pi * 2 * z)
#c是颜色
ax.plot(x, y, z, label = u '螺旋线' , c = 'r' )
ax.legend()
#存成图片,支持png格式
# dpi每英寸长度的点数,画出的三维图是矢量图,可以设置保存的dpi
plt.savefig( '3d_fig.png' ,dpi = 200 )
plt.show()
|
注:这里针对中文显示问题做了处理,具体可以参考《Python使用matplotlib绘图无法显示中文问题的解决方法》。
参考网站:
https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html
https://matplotlib.org/gallery.html
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://www.jianshu.com/p/5a30e2896cc0