
我有一个管半径的分布r,我想r在单个图中为所有采样绘制管,如上图所示.管具有以下特征:
所有管的长度是恒定的,但半径是变化的.
最窄的管子将完全填充浅灰色.
所有其他管中从底部开始的浅灰色的长度与管的半径成反比即即
length of light grey color from bottom = constant/r
管的剩余长度将填充深灰色.
r每个管的大小和总长度分别为1e-005m和1e-002m 的量级,因此与X和Y轴单元相比,它们需要标准化.
白色间隙只是空间而不是管.
更新(根据鲍里斯的回答)
这是Boris的代码,我根据上面描述的管的特性做了一些改变.我有缩放问题,因为我无法清楚地看到我的管网,如上图所示.
function drawGrayTube (x, r, sigma_wn, theta, del_rho, rmin, rmax,L)
% sigma_wn is in N/m (=Kg/s^2), theta is in degrees, del_rho is in Kg/m^3
% and L is in m
h=((2*sigma_wn*cos((pi/180)*theta))./(del_rho*9.81.*r));
hmin=((2*sigma_wn*cos((pi/180)*theta))./(del_rho*9.81.*rmax));
hmax=((2*sigma_wn*cos((pi/180)*theta))./(del_rho*9.81.*rmin));
rectangle ('Position',[x,0,r/rmax,h], 'FaceColor',[0.7,0.7,0.7]);
ylim([0 1]);
if L>h
rectangle ('Position',[x,L,r/rmax,L-h], 'FaceColor',[0.3,0.3,0.3]);
ylim([0 1]);
else
rectangle ('Position',[x,L,r/rmax,L], 'FaceColor',[0.3,0.3,0.3]);
ylim([0 1]);
end
end
Run Code Online (Sandbox Code Playgroud)
例如,绘制灰色管的简单功能可以是
function drawGrayTube (x, w, h)
rectangle ('Position',[x,0,w,h], 'FaceColor',[0.7,0.7,0.7]);
rectangle ('Position',[x,h,w,100-h], 'FaceColor',[0.3,0.3,0.3]);
end
Run Code Online (Sandbox Code Playgroud)
因此,x管的x位置w表示管的浅灰色部分的宽度和h之间0以及100高度.
您现在可以通过调用在您的示例中使用它
drawGrayTube (x, r, 100*constant/r)
Run Code Online (Sandbox Code Playgroud)
你必须适应constant/r最多的常数1.
您可以为白色间隙编写类似的函数.
假设您已经给出了一个半径矢量(已经缩放,使得值介于0和1之间),例如,r=[0.5, 0.7, 0.9, 0.1, 0.5, 0.01]那么绘制管的可能性是
interspace = 0.5;
for i=1:length(r)
drawGrayTube(sum(r(1:i-1))+i*interspace, 100*r(i)+1e-10, r(i)+1e-10);
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |