カラーマップの前面に直線を表示したいです

조회 수: 7 (최근 30일)
Mig
Mig 2023년 2월 9일
댓글: Atsushi Ueno 2023년 2월 10일
図のように、カラーマップと直線をプロットしようとしているのですが、この直線をカラーマップの前面に持ってくる方法が分からないので教えていただきたいです。
現在は次のような順番でプロットを作成しています。
figure(1);
%カラーマップのプロット
scatter3(a,b,c,1,d,'filled');
hold on;
colormap();
caxis();
view(2);
axis();
yticks();
axis square;
grid on;
xlabel();
ylabel();
%直線のプロット
x=;
y=;
plot(x,y,"black");
hold off;
よろしくお願い致します。

답변 (2개)

Atsushi Ueno
Atsushi Ueno 2023년 2월 9일
上記リンク先ドキュメントのここ↓です。描画したオブジェクトのハンドルが順に格納されたデータを上下逆さにひっくり返して格納し直すと描画順序が逆転します。
%Returns handles to the patch and line objects
chi=get(gca, 'Children')
%Reverse the stacking order so that the patch overlays the line
set(gca, 'Children',flipud(chi))
  댓글 수: 2
Atsushi Ueno
Atsushi Ueno 2023년 2월 9일
以前の質問から引っ張って来て試してみましたが、あーこれなんか駄目ですね。
つまり、描画順序に関わらず「手前に描画された線を後ろの線で隠す事が出来ない」ですね。
dat = readmatrix('https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1266860/sample.txt');
sample = cell2struct(num2cell(dat, 1), {'x','y','z','A'}, 2); % データセット(sample)の再現
scatter3(sample.x,sample.y,sample.z,20,sample.A,'filled');
colormap('jet'); caxis([-1 1]); view(2);
hold on;
plot(-10:0.1:10,sin(4*(-10:0.1:10))*20,'LineWidth',3);
hold off;
chi=get(gca,'Children');
set(gca,'Children',flipud(chi)); % scatter3とplotの描画順序をひっくり返す
Atsushi Ueno
Atsushi Ueno 2023년 2월 10일
同じ事をする uistack 関数がありました。また先のコメントに書いた事を逆に利用するアイデア(2次元プロットにZ座標値を追加して前後関係を定義する方法)が提案されています。なるほど

댓글을 달려면 로그인하십시오.


Atsushi Ueno
Atsushi Ueno 2023년 2월 9일
편집: Atsushi Ueno 2023년 2월 10일
3 次元プロットを 2 次元表示にすると、Z座標値は不要になります。Z座標値を全部ゼロにすれば、追加の 2 次元プロットと同一平面上にプロットされます。奥行の前後関係が無くなるので、別回答の描画順序が反映される様になります。因みに今回は、カラーマップの後に描画された直線が前面に表示されます。
dat = readmatrix('https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1266860/sample.txt');
sample = cell2struct(num2cell(dat, 1), {'x','y','z','A'}, 2); % データセット(sample)の再現
h = scatter3(sample.x,sample.y,sample.z,20,sample.A,'filled'); % 3 次元プロット
colormap('jet'); caxis([-1 1]); view(2); % 3 次元プロットを 2 次元表示
h.ZData = h.ZData * 0; % 3 次元プロットのZ座標データを全てゼロで上書き
hold on;
plot([-10 10],[-20 20],'LineWidth',5); % 追加の 2 次元プロット
hold off;
  댓글 수: 1
Mig
Mig 2023년 2월 10일
이동: Atsushi Ueno 2023년 2월 10일
こちらの方法で希望通りのプロットが作成できました!3次元プロットしていたのが問題だったのですね、ありがとうございます!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Blue에 대해 자세히 알아보기

태그

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!