读取列格式的三维模型并显示pyvista

本文介绍了使用Python进行数据加载和处理,通过MyDataSet类实现了一个三维模型的可视化,展示了如何读取数据、创建颜色映射并调整z轴比例。关键步骤包括读取'case5.dat'文件,重构数据并应用facies数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据格式如下

前四行为基本信息,读取时跨过去,输出时按k,j,i的循环顺序

#coding=utf-8

import numpy as np
import pyvista as pv
import matplotlib.pyplot as plt
import matplotlib as mpl

ni=129
nj=129
nk=100
class MyDataSet:
	def __init__(self,  fileNameList):
		self._fileNameList=fileNameList
		self.create_colorMap()
		self.p=pv.Plotter()		
		self.p.set_scale(zscale=10)
		#self.p.add_slider_widget(self.set_zscale(),rng=np.range(1,100))
		self.p.add_axes()
		
	def readData(self, fileName):
		dat=np.loadtxt(fileName,skiprows=4)
		dat=dat.transpose()
		self.x = dat[3].reshape(nk,nj,ni)
		self.y = dat[4].reshape(nk,nj,ni)
		self.z = dat[5].reshape(nk,nj,ni)
		self.facies = dat[6].reshape(nk,nj,ni)		
		self.facies[self.facies>7]=7
		
	def create_colorMap(self):
		#colors= ['blue','cyan','green','pink','magenta','purple','gold','red']
		colors= ['blue','green','pink','magenta','orange','yellow','red']
		self.discmap = mpl.colors.ListedColormap(colors)
 
	def set_zscale(self, _zscale):
		self.p.set_scale(zscale=_zscale)
 
	def showModel(self):	
		grid = pv.StructuredGrid(self.x, self.y, self.z)
		#grid.point_arrays["values"]=self.facies.flatten(order="F")
		grid.cell_arrays["values"]=self.facies[0:nk-1, 0:nj-1, 0:ni-1].flatten(order="F")
		self.p.add_mesh(grid, cmap=self.discmap,  show_scalar_bar=True)
		self.p.show()

if __name__=="__main__":
	fileNameList=[]
	myDataSet = MyDataSet(fileNameList)
	myDataSet.readData('./case5.dat')
	myDataSet.showModel()

效果如下

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oceanstonetree

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值