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

12 次查看(过去 30 天)
Mig
Mig 2023-2-9
図のように、カラーマップと直線をプロットしようとしているのですが、この直線をカラーマップの前面に持ってくる方法が分からないので教えていただきたいです。
現在は次のような順番でプロットを作成しています。
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次元プロットしていたのが問題だったのですね、ありがとうございます!

请先登录,再进行评论。

标签

产品


版本

R2017b

Community Treasure Hunt

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

Start Hunting!