- scatter3(X,Y,Z,S,C)の構文を使えば、5番目の引数Cにsample.Aの値を入力出来ます
- 事前定義されたカラーマップに希望の色配置が無い為、カラーマップの作成が悩みどころです
- 真っ赤(rgb=[1,0,0])は0.5、真っ青(rgb=[0,0,1])は-0.5、0は真っ白(rgb=[1,1,1])と思われます
- ±1は真っ黒(rgb=[0,0,0])ではありません。適当な勾配を与え希望の色配置に近づけました
- カラーマップの値域(-1~1)に対しsample.txtにおけるsample.Aの値域は-0.3~0.2位の為、表示色が薄くなっています
dat = readmatrix('https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1266860/sample.txt');
sample = cell2struct(num2cell(dat, 1), {'x','y','z','A'}, 2); % データセット(sample)の再現
up = (0:63)'/63; % 勾配+1 の直線(0⇒1)(長さ64)
dn = flipud(up); % 勾配-1 の直線(1⇒0)(長さ64)
on = ones(64,1); % 勾配 0 の直線(ずっと1)(長さ64)
zr = on * 0; % 勾配 0 の直線(ずっと0)(長さ64)
u2 = ((0:63)'+37)/100; % 勾配+1位の直線(0.37⇒1)(長さ64)
d2 = flipud(u2); % 勾配-1位の直線(1⇒0.37)(長さ64)
scatter3(sample.x,sample.y,sample.z,20,sample.A,'filled');
colormap([[zr; up; on; d2] [zr; up; dn; zr] [u2; on; dn; zr]]); % [r g b]の順に長さ256のグラデーションを作成
caxis([-1 1]); % カラーマップの範囲を設定
colorbar; % カラーバーを表示