Borrar filtros
Borrar filtros

display multiple 3D figures with plot3

1 visualización (últimos 30 días)
Alberto Acri
Alberto Acri el 6 de Dic. de 2022
Comentada: Star Strider el 6 de Dic. de 2022
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?

Respuesta aceptada

Star Strider
Star Strider el 6 de Dic. de 2022
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 comentarios
Alberto Acri
Alberto Acri el 6 de Dic. de 2022
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 el 6 de Dic. de 2022
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.
.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Large Files and Big Data en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by