display multiple 3D figures with plot3

2 ビュー (過去 30 日間)
Alberto Acri
Alberto Acri 2022 年 12 月 6 日
コメント済み: Star Strider 2022 年 12 月 6 日
Hi. I have some 3D figures that I would like to plot within a single graph using plot3.
I started with this code:
NM=10;
STEP=1;
color='rb';
iter=0;
for i=1:STEP:NM
nomefile=sprintf('C:\\Users\\Alberto\\Downloads\\object_%d.txt',i);
objAA=load(nomefile);
object(:,:,i)=objAA;
fg=sprintf('%s.',color(i));
figure(1)
plot3(object(:,1,i),object(:,2,i),object(:,3,i),fg)
hold on
end
But it gives me the following error:
Unable to perform assignment because the size of the left side is 29520-by-3 and the size of the right side is
43422-by-3.
Error in ...... (line ..)
object(:,:,i)=objAA;
Do you have to have the two 3D figures with the same nodes?

採用された回答

Star Strider
Star Strider 2022 年 12 月 6 日
Save each loaded file to a cell array instead.
Try something like this —
a = randi(9, 10, 3);
writematrix(a,'Test1.txt');
b = randi(9, 15, 3);
writematrix(b,'Test2.txt');
figure
hold on
for i = 1:2
object{i} = load(sprintf('Test%d.txt',i));
plot3(object{i}(:,1), object{i}(:,2), object{i}(:,3), 'DisplayName',sprintf('Test%d.txt',i))
end
hold off
grid on
legend('Location','best')
Make appropriate changes to get the desired results.
.
  6 件のコメント
Alberto Acri
Alberto Acri 2022 年 12 月 6 日
Whereas if I wanted to set a certain color for each 'test_#.txt'?
I tried this way but it gives me error.
color='rb';
a = randi(9, 10, 3);
writematrix(a,'test_1.txt');
b = randi(9, 15, 3);
writematrix(b,'test_2.txt');
figure
hold on
for i = 1:2
object{i} = load(sprintf('test_%d.txt',i));
fg=sprintf('%s.',color(i));
plot3(object{i}(:,1), object{i}(:,2), object{i}(:,3), '.', 'MarkerSize',15, 'DisplayName',sprintf('test\\_%d.txt',i), fg)
end
hold off
grid on
axis('padded')
legend('Location','best')
Star Strider
Star Strider 2022 年 12 月 6 日
Setting the individual DisplayName' colour doesn’t appear to be possible. I thought that the 'DisplayName' was a text object, and in that instance, it would be possible to change the text colours individually. It is not. It just appears to be a string array or character vector array, with no specific properties that can be set. It is possible to change the colours of the strings in the legend object, however not individually. They all have to be set to the same colour.
The dots however can be coloured specifically, and this code uses the ‘color’ vector to do that —
color='rb';
a = randi(9, 10, 3);
writematrix(a,'test_1.txt');
b = randi(9, 15, 3);
writematrix(b,'test_2.txt');
figure
hold on
for i = 1:2
object{i} = load(sprintf('test_%d.txt',i));
plot3(object{i}(:,1), object{i}(:,2), object{i}(:,3), '.', 'MarkerSize',15, 'DisplayName',sprintf('test\\_%d.txt',i), 'Color',color(i) )
end
hold off
grid on
axis('padded')
legend('Location','best')
That is likely the best it’s possible to do with respect to the colours.
.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLarge Files and Big Data についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by