scatterの点にデータ(色)を載せる方法

79 views (last 30 days)
Hiroki Takeda
Hiroki Takeda on 21 Apr 2022
Commented: Atsushi Ueno on 22 Apr 2022
3つのデータ(A、B、C)があります。それぞれ、90×72のデータです。
scatterで、AとBをし、その点の色をCにしたいと考えています。Cのデータのカラーはjetなどで構いません。
色を指定する方法は見つかるのですが、Cのデータを乗せる方法がわからず困っていました。
ご教示くださりますと幸いです。よろしくお願いいたします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 21 Apr 2022
scatter(x,y,sz,c)の文法で色の設定が出来ます。一つ問題があって、x,yが共に行列だと1点ずつ色設定する事が出来ず、列毎にしか色を分けられません。x,yに行列ではなくベクトルを入力すれば1点ずつ色設定することが出来ます。下記に例を示します。
[A B] = meshgrid(1:72, 1:90); C = rand(90,72); % A,B,Cはそれぞれ90行72列の行列(値は例)
A = A(:); % 行列A(90行72列)⇒ベクトルA(6480行1列)に変換
B = B(:); % 行列B(90行72列)⇒ベクトルB(6480行1列)に変換
J = jet(256); % 256行3列のカラーマップjetを得る(256行は例。色の分解能)
C = ceil(C./ max(C,[],'all').* 256); % Cを最大値で割り1~256に正規化
C = J(C, :); % Cのデータ⇒RGB値に変換(6480行3列)
scatter(A,B,1,C);
  4 Comments
Hiroki Takeda
Hiroki Takeda on 22 Apr 2022
ご丁寧にありがとうございます。
無事に解決できました。
Atsushi Ueno
Atsushi Ueno on 22 Apr 2022
@Hernia Babyさん > の仰る通りです。
私の回答は、x,y共に行列で入力し「RGB3成分による点毎のカスタム色割り当て」を検討した状態のままです。因みにこれもx,yがベクトルでないと出来ず、その仕様に気付いて行列をベクトルに変えました。

Sign in to comment.

More Answers (1)

Hernia Baby
Hernia Baby on 21 Apr 2022
引数でサイズの次が色なので、そこに設定してください。
[A,B,C]=peaks(90);
scatter(A(:),B(:),[],C(:))
  1 Comment
Hiroki Takeda
Hiroki Takeda on 22 Apr 2022
ベクトルにするのができておりませんでした。丁寧にありがとうございました。

Sign in to comment.

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!