필터 지우기
필터 지우기

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

조회 수: 5 (최근 30일)
rika yamada
rika yamada 2020년 11월 2일
댓글: rika yamada 2020년 11월 6일
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!