如何设置绘图中线条之间的间距?

时间:2018-07-20 10:45:26

标签: matlab graph 3d

我正在使用矩阵数据(很多乘以3)来制作3D图。我需要在图中指定跳转线(或线之间的间隔)。我没有找到可以设置的命令?

这是代码,非常简单。我无法共享数据文件,但它非常庞大,就像许多数字行和3列一样。我想配置图,就像它仅每5条线在图1行中显示一样。

k= fopen('propagation.dat','r'); 
p= textscan(k,'%f %f %f'); 
fclose(k); % fecha o arquivo
xn=p{1,1};
yn=p{1,2};
zn=p{1,3};
plot3(xn,yn,zn,'linewidth',0.1)
xlabel('Name X')
ylabel('Name Y')
zlabel('Name Z')
title('Title')

Graph here

2 个答案:

答案 0 :(得分:0)

将您的plot3行更改为以下内容:

plot3(xn(1:5:end), yn(1:5:end), zn(1:5:end), 'linewidth', 0.1)

答案 1 :(得分:0)

我已经能够复制您的图,这就是我认为您的数据如下所示:

[xn,yn] = meshgrid(linspace(0,0.5,14),linspace(-15,15,100));
zn = exp(-2*yn.^2).*xn;
xn = xn(:);
yn = yn(:);
zn = zn(:);

figure
plot3(xn,yn,zn)
set(gca,'ylim',[-10,10],'zlim',[0,2]);
box off

enter image description here

您在这里所做的是绘制了一条直线,因此第一条线结尾处的点与第二条线开头处的点相连。这将在数​​据线之间创建一条对角的直线。为避免显示这些行,请在每行末尾将NaN值添加到数据中。您可以这样做:

index = find(diff(yn)<0);
zn(index) = nan;

figure
plot3(xn,yn,zn)
set(gca,'ylim',[-10,10],'zlim',[0,2]);
box off

enter image description here

修复后,如果要进一步减少绘制的线数,则需要删除整条线,而不是像其他答案一样删除每条线的单个点。这有点复杂,但是可以这样实现:

len = index(1);
index = [0;index]+1;
index = index(1:3:end); % every 3rd line -- change to select how many lines to plot
elems = ((0:len) + index).'; % implicit singleton expansion
%elems = bsxfun(@plus,0:len,index).'; % use this instead if the previous line doesn't work
elems = elems(:);
xn = xn(elems);
yn = yn(elems);
zn = zn(elems);

figure
plot3(xn,yn,zn)
set(gca,'ylim',[-10,10],'zlim',[0,2]);
box off

enter image description here