如何在Python中一个绘图中绘制速度剖面和边界厚度剖面?

如何在Python中一个绘图中绘制速度剖面和边界厚度剖面?,python,matplotlib,Python,Matplotlib,我正试图构建一个如下图所示的情节: 我可以单独绘制每个配置文件;此代码用于绘制边界层: import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,10,1000) U=0.5 nu=15.89*10**-6 delta=5/np.sqrt(U/(nu*x)) plt.plot(x,delta) plt.xlim(0,10) plt.ylim(0,0.12) plt.grid() plt.show() ,这一个用

我正试图构建一个如下图所示的情节:

我可以单独绘制每个配置文件;此代码用于绘制边界层:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,10,1000)
U=0.5
nu=15.89*10**-6
delta=5/np.sqrt(U/(nu*x))
plt.plot(x,delta)
plt.xlim(0,10)
plt.ylim(0,0.12)
plt.grid()
plt.show()

,这一个用于绘制速度剖面图:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,10,31)
eta = np.linspace(0,10,31)
U=0.5
nu=15.89*10**-6
y = eta/np.sqrt(U/(nu*2))
fp=np.array([0, 0.066513,   0.132974,   0.199252,   0.265127,   0.330298,   0.394392,   0.456971,   0.517552,   0.575633,   0.630712,   0.682317,   0.73004,    0.773553,   0.812637,   0.847192,   0.877241,   0.902924,   0.924491,   0.942275,   0.956661,   0.968092,   0.976998,   0.98379,    0.98889,    0.992639,   0.995322,   0.997228,   0.998547,   0.999438,   1.000034])
u = fp*U
plt.plot(u,y)
plt.grid()
plt.show()


我曾尝试将两个图合并成一个图,如图中所示,但我做不到。请您建议我如何做。

您可以在第二个绘图的u值上添加一个位置。其他两条曲线可以用类似的方式绘制

使用默认比例,3条曲线与
delta
曲线相比相当高。在给定位置插值,可以用
delta
曲线的高度缩放新曲线:

将numpy导入为np
将matplotlib.pyplot作为plt导入
图,ax=plt.子批次(图尺寸=(12,4))
x=np.linspace(0.001,10,1000)
U=0.5
nu=15.89*10**-6
δ=5/np.sqrt(U/(nu*x))
ax.plot(x,delta,color='dodgerblue')
eta=np.linspace(0,10,31)
fp=np.array([0,0.066513,0.132974,0.199252,0.265127,0.330298,0.394392,0.456971,0.517552,0.575633,0.630712,0.682317,0.73004,0.773553,0.812637,0.847192,0.877241,0.902924,0.924491,0.942275,0.956661,0.968092,0.976998,0.379,0.98889,0.9999,0.9938])
u=fp*u
对于[1,3,6,9]中的位置:
y=eta/np.sqrt(U/(nu*位置))
#比例=0.6
缩放=np.interp(位置,x,增量)/y.max()
ax.绘图(u+位置,y*缩放,颜色为紫色)
ax.plot([position,position],[0,y.max()*缩放],color='black')
ax.set_xlim(0,10)
ax.set_ylim(0,0.12)
ax.grid()
plt.show()

PS:以下更改将按给定绘制曲线(无缩放),然后将其延伸至所需高度:

所需高度=0.12
对于[1,3,6,9]中的位置:
y=eta/np.sqrt(U/(nu*位置))
ax.plot(np.append(u+位置,(u+位置)[-1]),np.append(y,所需高度),color='purple')
ax.绘图([位置,位置],[0,所需高度],颜色='黑色')

删除第一个plt.show()?@扭曲,它不起作用,因为每个绘图中的轴限制不同。非常感谢。如果
y=eta/np.sqrt(U/(nu*position))
position=[1 3 5 7]
,我如何为不同的
位置
值绘制多个剖面?您可以了解如何计算比例(或高度)?相应的高度表示斜率为零的常量值。例如下面示意图中描绘的轮廓:italic boldI我认为我们可以通过重复阵列的最后一个值来解决高度问题。