3次元stemプロットをZ軸の値によってカラーバー表示する方法
3 次查看(过去 30 天)
显示 更早的评论
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
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')
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Stem Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!