Pcolor equivalent for 3D array
조회 수: 63 (최근 30일)
이전 댓글 표시
Hi guys,I want to draw the figure below. I know to use the pcolor function to draw 2D graphics. But now I have a 3D array and I would like a 3D plot of such an array - essentially a 3D cube consisting of 8 "subcubes", with different colors for different numbers just like shown below.
Can anyone help me plot this? Thanks.
댓글 수: 0
채택된 답변
Bjorn Gustavsson
2020년 7월 12일
The type of plot you've presented is easily reproduced by this:
[x,y,z] = meshgrid(0:3,0:4,0:5);
F = floor(4*rand(size(x)));
szF = size(F);
sq = @(x) squeeze(x);
surf(sq(x(1,:,:)),sq(y(1,:,:)),sq(z(1,:,:)),sq(F(1,:,:)))
hold on
surf(sq(x(szF(1),:,:)),sq(y(szF(1),:,:)),sq(z(szF(1),:,:)),sq(F(szF(1),:,:)))
surf(sq(x(:,1,:)),sq(y(:,1,:)),sq(z(:,1,:)),sq(F(:,1,:)))
surf(sq(x(:,szF(2),:)),sq(y(:,szF(2),:)),sq(z(:,szF(2),:)),sq(F(:,szF(2),:)))
surf(sq(x(:,:,1)),sq(y(:,:,1)),sq(z(:,:,1)),sq(F(:,:,1)))
surf(sq(x(:,:,szF(3))),sq(y(:,:,szF(3))),sq(z(:,:,szF(3))),sq(F(:,:,szF(3))))
After that you might want to adapt the colormap or repeat the plot for displaying other slices in the volume - since this only shows the outer surfaces of a data-cube.
추가 답변 (1개)
Bjorn Gustavsson
2020년 7월 11일
For visualization of 3-D data matlab has a couple of builtin functions: slice, scatter3 and isosurface. They does tasks at least neighboring to the one you describe. You will find other functions for visualization of 3-D data on the file exchange: Volume visualizations, and if you search further there you might find even more. Your example figure seem to indicate that you are primarily interested in what goes on on the surface of a 3-D object, for that you might get a long way by using the surf command on the individual surfaces you want to look at from your 3-D data-volume.
HTH
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!