1.绘制散点图(读取csv)
import csv# 导入csv模块
import matplotlib.pyplot as plt#绘制石头三位点
file1 = './file/stone_points.csv'
with open(file1) as f:
reader = csv.reader(f)
header_row = next(reader)# 返回文件的下一行,在这便是首行,即文件头fig = plt.figure(1)
#fig = plt.subplot(1, 2, 1)
ax = fig.add_subplot(111, projection='3d')data1=[]
for ret in reader:
x=float(ret[0])
y=float(ret[1])
z=float(ret[2])
data1.append([x,y,z])
print(x," ",y," ",z)ax.scatter(x,y,z,('r', 'o', -50, -25))ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.title(file1)
plt.show()
【python|Python学习笔记八之matplotlib绘制三维图】
文章图片
2.绘制散点图+立体框
import matplotlib.pyplot as pltfile1=".\\file\\stone_points.txt"
file2=".\\file\\rois.txt"#绘制石头+立体框#石头坐标
stone_p=open(file1,"r",encoding='utf-8').readlines()
print(stone_p)
x,y,z=[],[],[]
for str in stone_p:
point=str.split("\t")
#print(point)
x.append(int(point[0]))
y.append(int(point[1]))
z.append(int(point[2]))#读取立体框
bevel=open(file2,"r",encoding='utf-8').readline()
ret=bevel.split("\t")
x_min,y_min,z_min,l,w,h=int(ret[0]),int(ret[1]),int(ret[2]),int(ret[3]),int(ret[4]),int(ret[5])
p0=[x_min,y_min,z_min]
p1=[x_min+l,y_min,z_min]
p2=[x_min+l,y_min+w,z_min]
p3=[x_min,y_min+w,z_min]
p4=[x_min,y_min,z_min+h]
p5=[x_min+l,y_min,z_min+h]
p6=[x_min+l,y_min+w,z_min+h]
p7=[x_min,y_min+w,z_min+h]#画图
ax1=plt.axes(projection="3d")
ax1.scatter(x,y,z,cmap="Blues")
ax1.scatter(x,y,z)
ax1.plot3D([p0[0],p1[0],p2[0],p3[0],p0[0]],[p0[1],p1[1],p2[1],p3[1],p0[1]],[p0[2],p1[2],p2[2],p3[2],p0[2]],color="green")
ax1.plot([p4[0],p5[0],p6[0],p7[0],p4[0]],[p4[1],p5[1],p6[1],p7[1],p0[1]],[p4[2],p5[2],p6[2],p7[2],p4[2]],color="green")
ax1.plot([p0[0],p4[0]],[p0[1],p4[1]],[p0[2],p4[2]],color="green")
ax1.plot([p1[0],p5[0]],[p1[1],p5[1]],[p1[2],p5[2]],color="green")
ax1.plot([p2[0],p6[0]],[p2[1],p6[1]],[p2[2],p6[2]],color="green")
ax1.plot([p3[0],p7[0]],[p3[1],p7[1]],[p3[2],p7[2]],color="green")ax1.set_xlabel("X")
ax1.set_ylabel("Y")
ax1.set_zlabel("Z")
ax1.invert_yaxis()
plt.show()
文章图片
推荐阅读
- #|【安卓学习之常见问题】初始化Spinner、CheckBox和SeekBar不触发事件
- python|利用新闻情绪预测股市
- 核酸检测录入python程序
- 爬虫|利用python一键修改host 一键上网
- vue|适合Vue用户的React教程,你值得拥有
- 机器学习|机器学习实战之朴素贝叶斯与垃圾邮件分类
- python|python经典案例(2)
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法的工程优化案例)
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法的TSP问题求解 - 附代码)