python的编程工具Thorny的下载及使用
- 进入网站
http://gis4g.pku.edu.cn/download/thonny-3-2-6-macos/
下载软件然后安装
![c4c9f3690f1b511cb532308b6c01042e.png](https://i-blog.csdnimg.cn/blog_migrate/be1b479a18ff06b5d061774c855bd3f6.jpeg)
- 在Thorny中安装第三方安装包:点击
工具
---管理包
然后搜索需要的第三方插件,点击下载安装。
![3d6bf659ed7f3ec9f5598c3a028d3d5d.png](https://i-blog.csdnimg.cn/blog_migrate/85d3f5e94b11e8c95be04f71b52c4dec.png)
SciencePlots的介绍和安装
- SciencePlots是一个依附于Matplotlib的扩展包,在这个扩张包中有许多可以直接调用预设好的绘图风格,包括
Science,IEEE
要求的绘图风格,详细信息可在网站https://github.com/garrettj403/SciencePlots中查看。 - 在Thorny的管理包中先搜索
matplotlib
并安装,之后再搜索SciencePlots
,并安装。
使用方法
- 部分数据样式如下,第1,3,5列为x轴数据,对应2,4,6列为y轴数据
![e2acb8a366620f87473e128b44d21b4a.png](https://i-blog.csdnimg.cn/blog_migrate/931859a11ad3661cf1368e54843ccd50.jpeg)
- 根据数据进行绘图代码如下:
import matplotlib.pyplot as plt #导入绘图库
d1, d2, d3, u1, u2, u3, temp = [], [], [], [], [], [], [] #设置数组
with open('v.txt', "r") as f: #打开.txt格式文件,并且将文件作为f
lines = f.readlines() #将f中的每一行作为一个元素存储在数组lines中
for line in lines: #for循环,使line遍历lines中的每一个元素,
temp = line.split() #对字符串进行切片,没有指定参数,则以空格为分隔符,分为单独的元素并存储在数组temp中
d1.append(float(temp[0])) #将数组temp第0个元素添加到数组d1中
u1.append(float(temp[1]))
d2.append(float(temp[2]))
u2.append(float(temp[3]))
d3.append(float(temp[4]))
u3.append(float(temp[5]))
with plt.style.context(['science', 'no-latex', 'ieee']): #使用绘图库,指定绘图风格
fig, ax = plt.subplots() #设置绘图窗口
ax.plot(d1, u1, label = '100ppm k=5 v=0.01') #设置绘图读取的数据,以及图例
ax.plot(d2, u2, label = '100ppm k=10 v=0.01')
ax.plot(d3, u3, label = '100ppm k=15 v=0.01')
ax.legend(title = 'Order') #设置数据图的标题
ax.set(xlabel = 'd') #设置x轴名称
ax.set(ylabel = 'u') #设置y轴名称
ax.set_xlim((0, 2.5)) #设置x轴刻度范围
# ax.autoscale(tight=True)
fig.savefig('fig1.png', dpi = 300) #保存并设置图片保存名称,格式以及分辨率
fig.show() #展示图片
![0088874d951406575c532984a89db851.png](https://i-blog.csdnimg.cn/blog_migrate/b95399e2e51b3d85ce6a086b7841c116.jpeg)
使用python对数据进行处理并绘制数据图
- 以ICEO为例,运行完算例后使用smapleDict程序生成速度数据,并进行无量纲化:
$$ d=frac{sqrt{x^2+y^2}-R}{R} u^*=frac{sqrt{u^2+v^2}}{u_{ref}} R=0.00001,u_{ref}=4.68697E-9 $$
- 使用python读取.txt文件,第1,2,3列分别为x,y,z轴坐标,第4,5,6列分别为x,y,z轴的速度分量,进行处理并绘图:
![92a1095e0e0736dc657271e312fe31b2.png](https://i-blog.csdnimg.cn/blog_migrate/d89a556718a3b6f5cd0b523bd5ac2294.jpeg)
import matplotlib.pyplot as plt #导入绘图库
filename = 'U.txt'
x, y, d, ux, uy, u= [], [], [], [], [], [] #设置数组
with open(filename, 'r') as f: #打开文件,并且命名为f
lines = f.readlines() #将f中的每一行作为一个元素存储在数组lines中
i = 0 #计数
for line in lines: #for循环,使line遍历lines中的每一个元素
temp = line.split() #对字符串进行切片,没有指定参数,则以空格为分隔符,并以数组的形式存储在temp中
x.append(float(temp[0])) ##将数组temp第0个元素添加到数组x中
y.append(float(temp[1]))
ux.append(float(temp[3]))
uy.append(float(temp[4]))
d.append(((((x[i])**2 + y[i]**2)**0.5)-0.00001)/0.00001) #进行计算
u.append(((ux[i]**2 + uy[i]**2)**0.5)/4.68697e-9)
i = i + 1
with plt.style.context(['science', 'no-latex', 'ieee']): #使用绘图库,指定绘图风格
fig, ax = plt.subplots() #设置绘图窗口
ax.plot(d, u, label = '$u^*$') #设置绘图读取的数据,以及图例
ax.legend(title = 'Order') #设置数据图的标题
ax.set(xlabel = 'd') #设置x轴名称
ax.set(ylabel = '$u^*$') #设置y轴名称
ax.set_xlim((0, 2.5)) #设置x轴刻度范围
# ax.autoscale(tight=True)
fig.savefig('ICEO.png', dpi = 300) #保存并设置图片保存名称,格式以及分辨率
fig.show()
![7c2970359320285dad0abb6b396a1aae.png](https://i-blog.csdnimg.cn/blog_migrate/4b82ad4644afc46a8dd0c96d5e22dc03.png)