我正在使用矩阵数据(很多乘以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')
答案 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
您在这里所做的是绘制了一条直线,因此第一条线结尾处的点与第二条线开头处的点相连。这将在数据线之间创建一条对角的直线。为避免显示这些行,请在每行末尾将NaN值添加到数据中。您可以这样做:
index = find(diff(yn)<0);
zn(index) = nan;
figure
plot3(xn,yn,zn)
set(gca,'ylim',[-10,10],'zlim',[0,2]);
box off
修复后,如果要进一步减少绘制的线数,则需要删除整条线,而不是像其他答案一样删除每条线的单个点。这有点复杂,但是可以这样实现:
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