我有一个管半径r
的分布,我想在单个图中为所有采样的r
绘制管子,如上图所示。管具有以下特征:
所有管的长度是恒定的,但半径是变化的。
最窄的管子将被完全填满 浅灰色。
所有其他管子底部的浅灰色长度是 与管半径成反比,即
length of light grey color from bottom = constant/r
管的剩余长度将填充深灰色。
r
的大小和每根管的总长度分别为1e-005
m和1e-002
m,所以它们需要与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
答案 0 :(得分:6)
绘制灰色管的简单功能可以是例如
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
此时,x
是指针的x位置,w
表示宽度,h
表示0
和100
浅灰色的高度管的一部分。
您现在可以通过调用
在您的示例中使用它drawGrayTube (x, r, 100*constant/r)
您必须调整常量,以使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
答案 1 :(得分:-1)
您应该使用函数rectangle