Graphics    

例 - Figure内の複数のカラーマップのシミュレーション

同じFigure内に2つの異なるSurfaceを表示し、各Surfaceを異なるカラーマップでカラーリングすると仮定します。2つのカラーマップを連結し、各AxesのCLimプロパティをカラーマップの異なる部分に写像するように設定することによって、2種類のカラーマップの効果を創り出すことができます。

この例では、同じ地形データから2つのSurfaceを作成します。1つは典型的な地図帳のカラー構成を使用します。すなわち海洋に対しては青のカラーリング、陸に対しては緑のカラーリングを使います。別のSurfaceは立体感を出すために光源を与えて照明します。このような照明には暗い色から明るい色まで単調に変化するカラーマップが必要です。

カラー範囲の計算

この例の重要な点は、各Surfaceが適切なカラーを含むカラーマップの一部を使用するように、 CLimに対する値を計算することです。

CLimに対する新たな値を計算するためには、以下の内容を把握する必要があります。

はじめに、サブプロット領域を定義し、Surfaceをプロットします。

2つのカラーマップを連結し、新たなカラーマップを設定します。

CLimに対する新たな値を計算するために必要なデータを求めます。

CLim値を計算するための関数定義

CLimに対する新たな値を計算すると、カラーマップの合計サイズに関連して各Axesで使いたいカラーマップの一部を決定し、それに応じて、そのClim範囲をスケーリングします。これを実行するためのMATLAB関数を定義することができます。

前ページの黒丸を付けたリストで、入力引数を確認します。M-ファイルは、はじめに特定のAxesに対して使用したい全カラーマップの割合(PCmRange)を計算し、それから与えられたAxesのCData範囲に対してカラーマップのその部分を使用するのに必要なCLim範囲を計算します。最後に、計算したCLim範囲に必要な最小値と最大値を決定し、これらの値を出力します。これらの値は与えられたAxesに対するカラー範囲です。

M-ファイルの使用

M-ファイルnewclimを使用して各AxesのCLim値を設定します。ステートメント

は、最初のAxesに対するCLim値を設定し、Surfaceはカラースロット65から120までを使用します。照明が与えられたSurfaceは、その下の64スロットを使用します。そのCLim値も同様にリセットする必要があります。

関数機能

MATLABでは、AxesのCLimプロパティに対する値が、Axesに表示されるグラフィックスオブジェクトのCDataに対応しなくても、それらに任意の値を設定することができます。MATLABは、常に最小のCLim値をカラーマップの最初のカラーに写像し、最大のCLim値をカラーマップの最後のカラーに写像しますが、これらのカラーに対応するCData値が実際に存在するかどうかには関係ありません。従って、オブジェクトの実際のCDataの最小値と最大値を越える値をCLimに対して設定すると、MATLABはカラーマップを部分的に使ってオブジェクトにカラーリングします。

M-ファイルnewclimは、グラフィックスオブジェクトの実際のCData値を、設定した最初と最後のカラーマップスロットに写像する値をCLimに対して計算します。計算したCLim値をもつ"仮想"のグラフィックスオブジェクトを定義することによって、これを行います。つぎの図はこの考え方を示したものです。この図では、Surface形状へのカラーの写像を視覚化しやすくするために、2つのSurfaceの側面図を示しています。仮想Surfaceを左側に、実際のSurfaceを右側に示しています。中央にあるのは、Figureのカラーマップです。

実際のSurfaceのCLim値は[0.4 -0.4]です。スロット65から120までを使って、このSurfaceにカラーリングするために、newclim[0.4 -1.4269]の新たなCLim値を計算しています。左側の仮想Surfaceはこれらの値を表しています。


 Axesのカラー範囲 - CLimプロパティ プロットに使用するLineのカラーの定義