4

各線が値に応じて色付けされている matlab に 2 次元線プロットがあります。これらの値に対応する色を示すカラーバーを追加したいと思います。

必要な値に従って線をプロットする解決策を得ましたが、カラーバーを正しく取得する方法がわかりません。私はこれを探していましたが、立ち往生しています。

  1. RGB カラー マトリックス COL を定義します。(等間隔の値 0:1 に対応する N x 3 の低い赤から暗い行列)。
  2. z 値に従ってデータを並べ替えます。
  3. COL 行列を内挿してすべての z 値の値を取得し、ラインの TRUECOL 行列を与えます。
  4. axiscolor-ordering を TRUECOL 行列に設定し、データをプロットします。

ミニマルな例:

% Generate 10 lines of 10 points
x = normrnd(0,1,10,10);
% The corresponding values are 
% Note that these do not have to linearly spaced in real code
z = [0,0.05,0.1,0.11,0.12,0.2,0.4,0.45,0.8,0.9];
% Define colormatrix
COL = [0.996078431372549 0.878431372549020 0.823529411764706;...
   0.937254901960784 0.231372549019608 0.172549019607843;...
   0.403921568627451 0 0.0509803921568627];
% Interpolate the COL matrix to get colors for the data
TRUECOL = interp1(linspace(0,1,3),COL,z,'pchip');
% Set the axis coloring qnd plot the data
set(gcf,'DefaultAxesColorOrder',TRUECOL);
plot(x);
colormap(TRUECOL);
colorbar

次に、カラーマップを変更してコロバーをプロットしますが、カラーバーの色は値 z に対応しません。どの色がどの値に対応するかをmatlabに伝える方法はありますか? カラーバー エディターを見ると、CData には何らかの関係があるはずですが、CData が z であることを指定する方法が見つかりません。

4

1 に答える 1

2

私の理解では、カラーバーのラベルを 0 から 11 ではなく 0 から 1 にする必要があるということです。これを修正するには、このcaxisコマンドを使用します。カラーバーの色のグラデーションを細かくするには、カラーマップをより細かく補間する必要があります。これを試して:

colormap(interp1(linspace(0,1,size(COL,1)), COL, linspace(0,1,100)));
caxis([0,1]);
colorbar

ここに画像の説明を入力

于 2014-05-14T16:06:24.793 に答える