在Matlab中的同一个图形上绘制多条线? plot()还是其他什么?

时间:2015-07-22 16:26:55

标签: matlab plot line

我想绘制几个点,以及连接一些点的线条。所以我这样编程:

<bean class="PayloadValidatingInterceptor" >
<property name="schemas">
<array>
<value>/WEB-INF/1.xsd</value>
<value>/WEB-INF/2.xsd</value>
</array>
</property>
<property name="addValidationErrorDetail" value="false"/>
<property name="validateRequest" value="true"/>
<property name="validateResponse" value="false"/>
</bean>

结果图片如下: 难以置信,对不起,我无法发布图片,但如果您使用样本数据运行我的程序,您将很容易得到我的照片。

样本输入文件:

prompt = 'Please enter the file name: ';
FileName = input(prompt, 's');
SaturationFile=fopen(FileName);

PoreCount  =fscanf(SaturationFile, '%d\n', 1);
ThroatCount=fscanf(SaturationFile, '%d\n', 1);

PI=fscanf(SaturationFile, '%d\n', PoreCount);
PX=fscanf(SaturationFile, '%f\n', PoreCount);
PY=fscanf(SaturationFile, '%f\n', PoreCount);
PS=fscanf(SaturationFile, '%d\n', PoreCount);

TI=fscanf(SaturationFile, '%d\n', ThroatCount);
TB=fscanf(SaturationFile, '%d\n', ThroatCount);
TE=fscanf(SaturationFile, '%d\n', ThroatCount);
TA=fscanf(SaturationFile, '%f\n', ThroatCount);
TL=fscanf(SaturationFile, '%f\n', ThroatCount);
TS=fscanf(SaturationFile, '%d\n', ThroatCount);

TB=TB+1;
TE=TE+1;

MaxA=0;
for i=1:ThroatCount
    if TA(i)>MaxA 
        MaxA=TA(i);
    end
end

scale=10;
PX  =PX  *scale;
PY  =PY  *scale;
TA  =TA  *scale;
MaxA=MaxA*scale;

for i=1:ThroatCount
    if TS(i)==0
        c='cyan';
    else
        c='black';
    end
    plot([PX(TB(i)) PX(TE(i))], [PY(TB(i)) PY(TE(i))], 'Color', c, 'LineWidth', TA(i));
end

for i=1:PoreCount
    if PS(i)==0
        c='cyan';
    else
        c='black';
    end
    rectangle('Position', [(PX(i)-0.5*MaxA) (PY(i)-0.5*MaxA) MaxA MaxA], 'FaceColor', c, 'EdgeColor', c, 'Curvature', [1 1]);
end

问题1: 根据定义,点之间应该有10条线,但为什么那里只有1条线?

问题2: 看起来这些点是按比例放大的,但线条仍然是那条细线,为什么?

谢谢!请帮帮我,长时间陷入困境。

1 个答案:

答案 0 :(得分:0)

你必须在开始绘图之前(在ThroatCount循环之前)放置figure, hold