4

私はcontourf関数を使用して等高線図を作成しています:

ここに画像の説明を入力

等高線を示す平面の上にグリッド線を表示したいと思います。

私は1つの解決策に出くわしましたが、次の2つのコマンドを含む2Dでのみ機能します(つまり、等高線図を2Dで表示する場合)。

grid on
set(gca,'layer','top');

ただし、軸を 3D で表示すると、グリッド線は表示されません。これを簡単に行う方法はありますか?

4

1 に答える 1

3

lineこれは、グリッド ラインを書き換えるオブジェクト操作、または gridxyと呼ばれる小さな FEX ツールを使用して実現できます。たとえば、同じプロパティを持つ Figure を再作成してみましょう。

figure
set(gcf,'Renderer','OpenGL')

%# plot surface and contour
Z = peaks;
surf(Z), hold on
[~,h] = contourf(Z);       %# get handle to contourgroup object

%# change the ZData property of the inner patches
hh = get(h,'Children');    %# get handles to patch objects
for i=1:numel(hh)
    zdata = ones(size( get(hh(i),'XData') ));
    set(hh(i), 'ZData',-10*zdata)
end

そして余分なグリッド線を追加します:

v = get(gca);
hg=gridxy(get(gca,'XTick'),get(gca,'YTick'), 'Color',[1,1,1]*0.25,'Linestyle',':');
set(hg,'Zdata',repmat(v.ZLim(1)+eps,[1 numel(get(hg,'Ydata'))]));

ここに画像の説明を入力


しかし、使用しない理由はありますsurfcか? 例えば:

Z = peaks(20);
surfc(Z);
view(-45, 20);

ここに画像の説明を入力

于 2013-09-19T07:32:09.570 に答える