3次元stemプロッ​トをZ軸の値によって​カラーバー表示する方​法

5 次查看(过去 30 天)
rika yamada
rika yamada 2020-11-2
maltab2018a(windows)を使っています。
stem3 を使って三次元プロットをしたのですが、これをZ軸の大きさに即して色を変える方法はあるでしょうか。(カラーバー表示をしたいです)
よろしくお願いします。
load('bool2.mat')
X=Book2_finesse.';
Y=Book2_power;
ZZ=Book2_snr(X-4,(110-Y)./10);
stem3(Y,X,ZZ,'b')
  2 个评论
Kiyoto Matsumoto
Kiyoto Matsumoto 2020-11-5
编辑:Kiyoto Matsumoto 2020-11-5
下記を参考にしました。拙い書き方は許してください。
階調を細かくする場合は、マップの生成時とインデックスの計算時に値をn倍すれば良いと思います。
縦棒の色が固定で良いなら、同URLのstem3にscatter3を重ねる方法が簡単そうです。
https://jp.mathworks.com/matlabcentral/answers/414559-3d-stem-plot-colored-by-z-value
load('bool2.mat')
X=Book2_finesse.';
Y=Book2_power;
ZZ=Book2_snr(X-4,(110-Y)./10);
figure
cm_max = ceil(max(max(ZZ)));%2018b以降ならceil(max(ZZ,[],'all'))
cm_min = floor(min(min(ZZ)));
cm = colormap(jet(cm_max - cm_min + 1));%1刻みの階調のマップを生成
hold all
%ZZの各要素について、NaNでないものを1つずづプロット
for i = 1:size(ZZ,1)
for j = 1:size(ZZ,2)
if ~isnan(ZZ(i,j))
sh(i,j) = stem3(Y(j), X(i), ZZ(i,j));
idx = round(ZZ(i,j) - cm_min + 1);%ZZの値を丸めてインデックスにする。cm_minがidx = 1になるようシフト。
set(sh(i,j), 'Color',cm(idx,:), 'MarkerFaceColor',cm(idx,:), 'MarkerEdgeColor',cm(idx,:))
end
end
end
hold off
colorbar
caxis([cm_min,cm_max])
grid on
view(-37.5, 30)
xlabel('Y')
ylabel('X')
zlabel('ZZ')
rika yamada
rika yamada 2020-11-6
ありがとうございます。
助かりました。

请先登录,再进行评论。

回答(0 个)

产品


版本

R2018a

Community Treasure Hunt

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

Start Hunting!