python定制后处理云图

        用后处理软件处理的云图会出现这样或那样的不满意,其实我们可以将求解数据导出以后,借助python定制云图。

        我们以fluent为例

        求解完成之后,我们将我们需要做云图的物理量以ASCII导出

 

如下的python脚本

代码如下:

# -*- coding: utf-8 -*-

 

import numpy as np

import csv

import matplotlib.pyplot as plt

from scipy.interpolate import griddata 

 

#==============================

#该段代码来支持在图片中显示中文

#==============================

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus']=False

 

#保存x坐标

x=[]

#保存y坐标

y=[]

#保存导出的速度

velocity=[]

 

#读取csv文件,当然也可以读取类似txt之类的文件

with open(r'/home/dell/new/contour/new','r')  as  csvfile:

#指定分隔符为",",因为我们刚才导出时就是逗号

        plots=csv.reader(csvfile,delimiter=',')

#循环读取到的文件

        for row in plots:

            #为了跳过文件前面的非数据行  

            if plots.line_num == 1:

            continue

            x.append(float(row[1]))

            y.append(float(row[2]))

            velocity.append(float(row[3]))

 

#如果数值过小,则视为0,防止出现非数的情况

y[y<1e-10]=0

 

xi=np.linspace(min(x),max(x),10000)

yi=np.linspace(min(y),max(y),10000)

 

#x,y坐标必须维数一致,且为二维

[X,Y]=np.meshgrid(xi,yi)

 

#对x,y的速度进行插值,插值的方法有'cubic','linear','nearest'

#注意传入的坐标参数需要以元组的形式成对传入

#当然matplotlib也自带griddata插值函数,该函数每个坐标是一个参数

#但matplotlib自带的griddata插值函数只能使用默认的linear插值

# Velocity=griddata((x,y),velocity,(X,Y),method='cubic')

# Velocity=griddata((x,y),velocity,(X,Y),method='nearest')

Velocity=griddata((x,y),velocity,(X,Y),method='linear')

 

#画出云图

#20为几条等值线,alpha为透明度,cmap对应的色彩风格

im=plt.contourf(X,Y,Velocity,20,alpha=0.75,cmap=plt.cm.jet)

#画出等值线

#color为等值线的颜色,linewidth为等值线的宽度

isoline=plt.contour(X,Y,Velocity,20,color='black',linewidth=0.1)

#在等值线上标上对应的数值

#inline表示是否将数值标在等值线上,fontsize为等值线上数值的字体的大小

plt.clabel(isoline,inline=True,fontsize=10)

#输出云图的legend

#orientation表示legend的位置,默认值为vertical,横置为horizontal

cbar=plt.colorbar(im, orientation='vertical', shrink=0.8)

#设置legend的标题

cbar.set_label('m/s')

#设置legend的范围

cbar.set_ticks(np.linspace(0,0.114,10)) 

#云图的标题

plt.title(u"速度云图")

#显示云图

plt.show()

转载于:https://www.cnblogs.com/liusuanyatong/p/11259693.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值