引子:对于已经给定的数据,比如数据是按照列分布的,想到的方法必然是先对每一列的数据建立对应的列表,然后在画图时,找好x轴,y轴,z轴就行。 1.数据提取: 数据先用with open()打开,但是打开后的数据需要先逐行遍历后放在一个列表中,这样才能在with open()外进行数据的操作:
with open('D:\Python_code\haha.txt') as df:
lines = df.readlines()
然后新建一个空的列表,把数据一个一个的存进去,这样先是一行行存到lines列表中,绕后要一个个存到另一个列表,对 lines进行操作即可: 新建file1列表,新建row[]是为了把lines中的行分开,分成单个的字符串,然后放入file1[]中,这里用到了append()方法。
file1 = []
row = []
for line in lines:
row = line.split()
file1.append(row)
2.数据分列:
xlong = []
zlong = []
ylong = []
for row1 in file1:
xlong.append(row1[0])
zlong.append(row1[2])
ylong.append(row1[1])
int_zlong = []
int_xlong = []
int_ylong = []
for str_x in xlong:
a=int(float(str_x))
int_xlong.append(a)
for str_z in zlong:
c = int(float(str_z))
int_zlong.append(c)
for str_y in ylong:
e = int(float(str_y))
int_ylong.append(e)
需要注意的是:这里在第一步提取列数据之后,是不可以直接进行数值运算的操作的,因为这些都是字符串,需要把它们变成整数或者浮点数才行。所以才有了后面的int_xlong。 3.绘制3D图形: 首先导入库,其中的axes3d是重头戏
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
然后开始绘制:
first = int_xlong[:50]
second=int_ylong[:50]
third= int_zlong[:50]
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_title("3Dpython")
ax.set_xlabel("xlabel")
ax.set_ylabel("ylabel")
ax.set_zlabel("z")
figure1 = ax.plot(firs, second, third, c='r')
|