3次元stemプロットをZ軸の値によってカラーバー表示する方法
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Kiyoto Matsumoto
le 5 Nov 2020
Modifié(e) : Kiyoto Matsumoto
le 5 Nov 2020
下記を参考にしました。拙い書き方は許してください。
階調を細かくする場合は、マップの生成時とインデックスの計算時に値を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')
Réponses (0)
Voir également
Catégories
En savoir plus sur Stem Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!