1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【iRIC v4】カラーマップ設定を使いこなそう

Last updated at Posted at 2023-07-25

はじめに

iRICのバージョンがv4になり、計算結果の可視化機能が大幅に強化されました。

この記事ではそのなかでもいくつかのカラーマップ機能について整理してみました。
カラーマップについてのマニュアルはこちらです。

概要

カラーマップ設定でまずユーザーがv3とv4で違いを感じるのは設定のダイアログだと思います。
比較してみるとv4ではv3から項目が増えたり、違うダイアログを開いて設定していた項目をひとつにまとめたのでとても大きくなっています。

image.png

項目が増えて難しく感じるかもしれませんが以前よりも感覚的に操作できるようになっています。
左側がカラーマップの表示に関する設定項目で、右側は凡例に関する項目です。

image.png

カラーマップの表示に関する設定(実数のスカラーの場合)

値と色の関係

表示色に表示されている値と色の組み合わせの値についての項目です。

値の範囲に合わせて自動調整を選択すると、値の範囲で指定した範囲に合わせて表示色に表示されている値の組み合わせの値が変化します。
この時、値と色の組み合わせ同士の値の間隔の比は維持されたままとなります。

image.png

手動で設定を選択すると表示色値と色の組み合わせの値を直接好きな値に編集することができます。(値の範囲の項目は消えます。)
image.png

一度、手動で値を設定して色と色の間隔を調整し、値の範囲に合わせて自動調整を選択することで間隔を維持したまま値の範囲を変更することができます。
これによって特定の値の区間の色の変化の密度を調整できます。
image.png

値の範囲

値の範囲では値と色の関係値の範囲に合わせて自動調整を選択している際に最大値最小値を指定できます。
自動にチェックを入れると各タイムステップの計算結果の最大値最小値を指定することができます。

各タイムステップの計算結果の最小値最大値に関係なく一定の範囲を指定したい場合は自動のチェックボックスを外します。

値の範囲自動
image_02.gif
値の範囲固定
image_03.gif

表示色

表示色の項目でカラーマップを構成する色の変化点と値を設定できます。

v3ではデフォルトで選択できるカラーマップはレインボーと白黒の2パターンのみで、手動で設定できるカラーマップも色が3色までしか選択できませんでした。
v4ではデフォルトで使用できるカラーマップが増えたとともに、ユーザーが手動で簡単にカラーマップを設定できるようになっています。

2023-07-24_15h51_33.png

実際にカラーマップを編集してみましょう。デフォルトでは以下のようなカラーマップ設定になっていると思います。
image.png

表示色の追加

v3では3色しか独自のカラーマップ設定で使用できませんでしたが、v4ではこの時点で5色も設定できています。ではこれに更に色を追加してみましょう。

表示色に表示されている値と色の組み合わせのどれかを選択して追加をクリックすると新たな値と色の組み合わせを追加することができます。
image_01.gif

追加される組み合わせは、追加を押した際に選択されていた組み合わせの下に挿入され、色と値は挿入された位置の上下の組み合わせで使用されている色と値を按分したものが使用されます。

表示色の削除

追加の時と同様に値と色の組み合わせを選択し、削除を押すと選択した値と色の組み合わせを削除することができます。
shiftまたはctrlキーを押しながら選択することで、複数の組み合わせ削除することも可能です。(複数選択は連続した組み合わせのみ可能です。飛び石のように選択することは現在はできません。)

image_04.gif

色の反転

色の反転を押すと色の並びが反転します。
image_05.gif

均等割

色の変化点の間隔を最大値と最小値の間で等間隔にします。
image_06.gif

色数の変更

色数の変更をクリックするとダイアログが現れ、表示色の数を変更できます。色数を増やした際には既存の色と色の間に按分された色が新しく追加されます。

image_11.gif

色の変更

値と色の組み合わせの列のセルをクリックすると、色選択のダイアログが現れ、色の変更が行えます。
色は基本カラー48色から選択できるほか、カラーピッカーを使用して色を指定することができます。

image_07.gif

最小値以下/最大値以上を描画

最小値以下を描画最大値以上を描画のチェックボックスを外すと、表示色で設定されている最大値、最小値の範囲外を描画しません。チェックを入れている場合、範囲外の数値は最大値または最小値と同じ色で描写されます。
image.png

区間別モード

区間別モードに切り替えを押すと以下のようなダイアログが表示され、値の区間と対応する色を設定することでグラデーションではなく区間別に色を表示するコンターで表示することができます。

image.png

上記のダイアログでは色の数値の範囲を指定することで最大値最小値の範囲内を当分割するような区間の値を自動で設定することができます。
区間の色については区間別モードに切り替えを押す際の表示色で設定されていた色から作成されたグラデーションを等分割した際の色が適用されます。

image.png

指定した色の数で値の範囲を分割する際に小数点以下の値が長いまたは割り切れない値の場合はオプション小数点以下の桁数を指定することで四捨五入することができます。

ログスケールにチェックを入れると以下のように区間ごとの値をログスケールで設定することもできます。
image.png

OKを押して区間別モードに切り替わると設定画面は以下のようになります。

image.png

表示色透明にチェックを入れるとその区間の色は表示されません。
その他の項目はグラデーションモードと同じなので説明は割愛します。

グラデーションモードに切り替えを押すとグラデーションモードに戻ります。

小技として、グラデーションモードで大まかな色を設定し、区間別モードに切り替えの際に色の数を増やして、グラデーションモードに戻ることできれいなグラデーションを保持したまま一括で色を増やすことが出来ます。

コンター線の描画

コンター線の描画にチェックを入れると等高線のみを表示することができます。
隣の線の幅から等高線の幅を指定でき、等高線の値はカラーマップの値を使用を選択すると表示色の値が、分割数を指定を選択すると指定した分割数で最大最小の範囲を等分割した値が使用されます。
等高線の色は表示色で指定した色を基に設定されます。

image.png

透過度

半透明にチェックを入れてスライダーから透過度を指定することで、カラーマップの透過度を指定できます。

透過度は調整したスカラーをオブジェクトブラウザで選択した状態で、ツールバーからも変更することができます。
ツールバーの透過度のスライダーはよく隠れているのでドラックで引っ張り出しましょう。
image_10.gif

凡例に関する設定

表示

表示のチェックボックスにチェックが入っている時のみ凡例を表示します。

表示の有無、向きの切り替え等の一部の項目はスカラー設定画面を開かなくてもオブジェクトブラウザーで対象の属性を選択している時にツールバーに表れる項目からも変更できます。
image.png

向き

凡例のカラーバーの表示の向きを変更できます。
image_08.gif

向き変更後の凡例のサイズはサイズと位置高さの数値が入れ替わった値となっています。
なお切り替えの際の元の高さの関係が以下の場合は数値の入れ替わりは発生しません。

  • 縦→横の際に元のサイズの関係が>高さの場合
  • 横→縦の際に元のサイズの関係が高さ>の場合

タイトル

凡例のタイトルを設定できます。
v4からは日本語のタイトルも設定できるようになりました。
フォント設定からフォントからフォントの設定が行えます。

ラベル表示

形式

形式でラベルの表示形式を指定できます。形式の指定は書式指定子で行います。
使われるであろうフォーマット指定子の例を以下に示します。
なお、iRIC上では全体の最小桁数を数値より大きくすると右詰めではなく中央寄せで表示されます。

%[全体の最小桁数].[小数点以下の桁数]型        # 書式指定子の構造[]内は省略可

# 値が1234.5678の場合の例

# 浮動小数点表記
1234.5678        # %.4f
1234.568         # %.3f

1234.5678        # %8.4f
1234.5678        # %9.4f
 1234.5678       # %10.4f
  1234.5678      # %11.4f

# 指数表記
1.2346e+03           # %.4e
1.2345678e+03        # %.7e
1.23456780e+03       # %.8e

1.2346e+03           # %9.4e
1.2346e+03           # %10.4e
 1.2346e+03          # %11.4e
  1.2346e+03         # %12.4e

#有効桁数を指定して四捨五入処理後の精度および値に応じて浮動小数点表示と指数表記をわける
1234.6               # %.5g
1234                 # %.4g
1.23                 # %.3g

image.png

ラベルの数

凡例に表示するラベルの数を指定します。
自動のチェックボックスにチェックを入れている場合は表示色で設定されている値と色の組み合わせの数が適用されます。

フォント設定

フォントの設定が行なえます。

表示色

タイトルの文字色、ラベルの文字色、凡例の背景色と透過度を指定できます。
枠線を描画にチェックを入れると凡例の範囲に枠線を表示します。枠線の色は背景色の非透過の色になります。

サイズと位置

凡例のサイズと位置を指定できます。

位置

描画範囲の4隅+上下左右の辺の中心の合計8箇所からの距離を描画範囲の高さと幅の割合で指定できます。

位置で4隅を指定した場合、以下の画像のように描画範囲の選択したの4隅と凡例の選択した4隅の距離で位置を指定します。
image.png

上下左右の辺を指定した場合、凡例の縦軸または横軸の位置は選択した描画範囲の辺の中心と凡例の中心が一致するように固定され、上下または左右のみに移動できるようになります。凡例の位置は描画範囲と凡例の選択した辺同士の距離で指定します。

image.png

iRIC v4ではスカラーの設定画面が開いている状態で可視化ウィンドウをアクティブにして操作することが可能になっているため、以下のアニメーションのように設定画面を開きながら凡例の位置はマウスで移動することも可能です。
マウスで位置を指定した際には位置で指定する箇所からの距離が最小になるように自動で選択箇所が変わります。
また、マウスで変更した位置は設定画面の数値と同期しているため大まかな位置をマウスで定めて細か調整は設定画面から数値で行うということも可能です。

image_09.gif

サイズ

凡例のサイズを指定します。タイトルやラベルがはみ出してしまう場合はここでサイズを調整してください。凡例の向きを変更すると、横表示の場合は幅が、縦表示の場合は高さがもう一方より大きくなるように値が自動で入れ替わります。

サイズに関しても位置と同様に設定画面を開いた状態で可視化画面にてマウスで変更することが可能です。

自動サイズ

チェックを入れると凡例のサイズをいい感じに自動調整してくれます。

バーの幅

縦表示の際の凡例内のカラーバーの幅を指定できます。
自動にチェックを入れると凡例のサイズに合わせた幅に設定されます。

縦表示の場合タイトルやラベルの長さに合わせて幅を広くすると、カラーバーがとても太くなってしまうので手動でカラーバーの幅を設定してください。
image.png

整列

凡例範囲内でのタイトル、カラーバーの整列のしかたを指定できます。
image.png

インポート・エクスポート

iRIC v4で追加された新機能です。

iRIC v4では表示色の設定や凡例の設定をまとめて保存したカラーマップの 設定ファイル(*.cmsetting) を使用することで設定の入出力が容易に行えるようになっています。
また、プリセットとしていくつかの設定ファイルが同梱されているのでそれらをインポートすることで様々な表示を簡単に切り替えられます。

インポート(標準設定から選択)

設定画面のインポートを押すと、以下のようなダイアログが現れます。標準設定のフォルダツリーから設定ファイルを選択し、OKを押すと設定を読み込みます。
image.png

標準設定

iRICをインストールしたフォルダ(標準はc:/Users/ユーザー名/iRIC_v4)の下のcolormapsフォルダとprivate/colormapsフォルダの下のサブフォルダと設定ファイル(*.cmsetting)の一覧がツリーで表示されます。

iRIC_v4/colormapsにはインストール時にデフォルトで同梱される設定ファイル群が入っています。
iRIC_v4/private/colormapsはユーザーが作成した設定ファイルを配置するフォルダです。インストールした段階ではiRIC_v4/privatecolormapsフォルダは作成されていないので各自作成して下さい。

このフォルダツリーからインポートしたい設定ファイルを選択することができます。

インポートする属性

設定ファイルからインポートしたい情報を選択することができます。
インポートしたい情報にチェックを入れて下さい。

プレビュー

標準設定で選択した設定ファイルからインポートする属性で選択した属性をインポートする際の凡例の様子をプレビューできます。

インポート(ファイルを選択)

カラーマップ設定のインポートダイアログのモードファイルを選択を選択すると以下の画面に切り替わります。

ファイルで設定ファイルのパスを指定するか、...ボタンを押してファイル選択ダイアログで設定ファイルを選択してOKを押すと設定を読み込みます。

image.png

標準でインストールされる設定ファイルの他にも様々なカラーマップをiRIC HPで公開しています。

https://i-ric.org/download/colormapsettingfiles/

エクスポート

カラーマップの設定画面で設定した内容を設定ファイルとしてエクスポートできます。
エクスポートを押すと出力先を指定するダイアログが現れるので保存先とファイル名を指定します。

この時、iRIC_v4/private/colormaps以下に保存しておくと、インポート時の一覧に表示されるので便利です。

【番外編】デフォルトのカラーマップを変更する

iRICでは何の設定もせず計算結果を表示した際のカラーマップは虹色の設定になっています。
image.png

使いたいフォントが決まっていたり、凡例の横表示にしたりと、違うカラーマップ設定がお気に入りの人は毎回設定を変えるのが手間だと思います。
なのでデフォルトのカラーマップ設定を変更する方法を整理します。

まず、iRIC v4でデフォルトとして読み込まれるカラーマップの設定はiRIC_v4/colormaps/default.cmsettingとなっています。
直接この設定ファイルを上書きしてもよいのですが、iRIC v4ではiRIC_v4/private/colormapsにもdefault.cmsettingがある場合にはこちらを優先的に使用するようになっています。

なので、自分好みに設定したカラーマップの設定をiRIC_v4/private/colormapsdefault.cmsettingというなまえでエクスポートしてあげることで、本来のdefault.cmsettingを変更せずにデフォルトのカラーマップ設定を変更することができます。

デフォルト設定の変更後に反映されていない場合は、可視化ウィンドウを開き直すかファイル名が間違っていないかを確認してください。

【番外編2】カラーマップの設定ファイルの中身

カラーマップの設定ファイル(*.cmsetting)はXML形式のテキストデータです。
なのでiRIC上で設定を変更してエクスポートをし直さなくてもテキストデータを直接いじることで内容を変更することができます。

設定ファイルの例を以下に示します。
おそらく開いた状態では改行されていませんが、見やすさの為に改行しています。

グラデーションモードの場合
<?xml version="1.0" encoding="UTF-8"?>
    <ColorMapSetting 
    transitionMode="0" 
    valueMode="1" 
    autoValueRange="true" 
    minValue="0" 
    maxValue="1" 
    fillUppeer="true" 
    fillLower="true" 
    colorTableMinValue="0" 
    visible="true" 
    direction="1" 
    barAutoWidth="false" 
    barWidth="30" 
    barAlign="1" 
    title="node_scalar_r1" 
    autoNumberOfLabels="true" 
    numberOfLabels="2" 
    labelSkipRate="1" 
    labelFormat="%5.2f" 
    titleFont="Century Gothic,14,-1,5,50,0,0,0,0,0,Regular" 
    labelFont="Century Gothic,14,-1,5,50,0,0,0,0,0,Regular" 
    titleColor="#000000" 
    labelColor="#000000" 
    backgroundColor="#ffffff" 
    backgroundOpacityEnabled="true" 
    backgroundOpacityPercent="20" 
    showBorder="true" 
    position="7" 
    horizontalMarginRatio="0" 
    verticalMarginRatio="0.1" 
    autoSize="false" 
    width="300" 
    height="200">
        <Item value="0" color="#0000ff" transparent="false"/>
        <Item value="0.25" color="#00ffff" transparent="false"/>
        <Item value="0.5" color="#00ff00" transparent="false"/>
        <Item value="0.75" color="#ffff00" transparent="false"/>
        <Item value="1" color="#ff0000" transparent="false"/>
</ColorMapSetting>

基本的な構造としてはColorMapSetting要素が色と値の関係凡例設定等の諸々の内容で、ColorMapSettingの子要素としてItem表示色に追加されている値と色の組み合わせの内容となっています。Itemは表示色テーブルの色と値の組み合わせの数だけ追加されます。

複数のカラーマップを編集したい時はiRIC上で編集してから保存するよりテキストエディタや簡単なプログラムで一括で設定してあげると早いです。

ColorMapSetting要素の属性は以下の通りです。

要素 内容
transitionMode カラーマップ表示のモード 0:グラデーションモード
1:区間別モード
valueMode 値と色の関係 0:手動で設定
1:値の範囲に合わせて自動調整
autoValueRange 値の範囲の自動設定 true:する
false:しない
minValue 値の範囲の最小値 実数
maxValue 値の範囲の最大値 実数
fillUppeer 最小値以上を描画 true:する
false:しない
fillLower 最小値以下を描画 true:する
false:しない
colorTableMinValue transitionMode=1(区間別モード)の時の表示色テーブルの一番下の行の最小値の値 実数
visible 凡例の表示 true:する
false:しない
direction 凡例の向き 0:横
1:縦
barAutoWidth 凡例のカラーバーの幅の自動調整 true:する
false:しない
barWidth 凡例のカラーバーの幅 整数
barAlign 凡例の整列 0:左寄せ
1:中央寄せ
2:右寄せ
title 凡例のタイトル 文字列
autoNumberOfLabels ラベルの数の自動設定 true:する
false:しない
numberOfLabels ラベルの数
設定ファイルで指定した値+2個のラベルが表示される
グラデーションモードで使用
整数
labelSkipRate ラベルの間引き
指定した値おきにラベルが表示される
区間別モードで使用
整数
labelFormat ラベルの表示形式 書式指定子
titleFont 凡例タイトルのフォント 例:Century Gothic,14,-1,5,50,0,0,0,0,0,Regular
labelFont ラベルのフォント 例:Century Gothic,14,-1,5,50,0,0,0,0,0,Regular
titleColor 凡例タイトルの文字色 カラーコード(HEX)
labelColor ラベルの文字色 カラーコード(HEX)
backgroundColor 凡例の背景色 カラーコード(HEX)
backgroundOpacityEnabled 凡例の背景色の透過 true:する
false:しない
backgroundOpacityPercent 凡例の背景色の透過率 整数
showBorder 凡例の枠線の描画 true:する
false:しない
position 凡例の位置 0:上
1:下
2:左
3:右
4:左上
5:右上
6:左下
7:右下
horizontalMarginRatio 基準からの水平距離(%) 実数
verticalMarginRatio 基準からの垂直距離(%) 実数
autoSize 凡例サイズを自動調整するか true:する
false:しない
width 凡例の幅 整数
height 凡例の高さ 整数

Itemの属性は以下のとおりです。

要素 内容
value グラデーションモードの場合の列の値
区間別モードの場合の最大値の値
実数
color 値に対応する色 カラーコード(HEX)
transparent 色を透明にするか
※区間別モード時に使用される値です。
true:する
false:しない

colorTableMinValueとvalueの値について

colorTableMinValuevalueは表示色テーブルの色に対応した値の属性となりますが、valueMode(値と色の関係)が0:手動で設定1:値の範囲に合わせて自動調整かで扱いが異なります。
以下のような設定の場合の値の扱いを整理します。

区間別モードの場合
image.png
グラデーションモードの場合
image.png

0:手動で設定の場合、設定ファイル(*.cmsetting)上でのcolorTableMinValuevalueの値は上記画像で入力されているものがそのまま入力されます。

# グラデーションモードの場合
<ColorMapSetting
transitionMode="0" 
valueMode="0" 
minValue="5" 
maxValue="10"
colorTableMinValue="5">
    <Item value="5" color="#0000ff" transparent="false"/>
    <Item value="6.25" color="#00ffff" transparent="false"/>
    <Item value="7.5" color="#00ff00" transparent="false"/>
    <Item value="8.75" color="#ffff00" transparent="false"/>
    <Item value="10" color="#ff0000" transparent="false"/>
</ColorMapSetting>

# 区間別モードの場合
<ColorMapSetting
transitionMode="1" 
valueMode="0" 
minValue="5" 
maxValue="10"
colorTableMinValue="5" >
    <Item value="6" color="#0000ff" transparent="false"/>
    <Item value="7" color="#00ffff" transparent="false"/>
    <Item value="8" color="#00ff00" transparent="false"/>
    <Item value="9" color="#ffff00" transparent="false"/>
    <Item value="10" color="#ff0000" transparent="false"/>
</ColorMapSetting>

# ※関係ない属性は省略しています。

1:値の範囲に合わせて自動調整の場合、設定ファイル(*.cmsetting)上ではそのままの値は入力されず、値が最小値から最大値の範囲のどこに位置するかを0~1の割合で入力されます。
そのため設定ファイル上でのcolorTableMinValuevalueの値は以下のようになります。
なお、minValuemaxValuevalueMode(値と色の関係)にかかわらずそのままの値が入ります。

# グラデーションモードの場合
<ColorMapSetting 
transitionMode="0" 
valueMode="1" 
minValue="5" 
maxValue="10"
colorTableMinValue="0" >
    <Item value="0" color="#0000ff" transparent="false"/>
    <Item value="0.25" color="#00ffff" transparent="false"/>
    <Item value="0.5" color="#00ff00" transparent="false"/>
    <Item value="0.75" color="#ffff00" transparent="false"/>
    <Item value="1" color="#ff0000" transparent="false"/>
</ColorMapSetting>

# 区間別モードの場合
<ColorMapSetting
transitionMode="1" 
valueMode="1" 
minValue="5" 
maxValue="10"
colorTableMinValue="0">
    <Item value="0.2" color="#0000ff" transparent="false"/>
    <Item value="0.4" color="#00ffff" transparent="false"/>
    <Item value="0.6" color="#00ff00" transparent="false"/>
    <Item value="0.8" color="#ffff00" transparent="false"/>
    <Item value="1" color="#ff0000" transparent="false"/>
</ColorMapSetting>

ColorMapSettingの属性が指定されてない場合の処理

設定ファイルのバージョンが古かったり意図して削除されていたりでColorMapSetting要素の属性が指定されていなかった場合、インポートの際には指定されていない属性はデフォルトの値が適用されます。

デフォルトの値は以下で指定されています。

カラーマップの表示に関わる属性値

カラーマップの表示に関わる属性値のデフォルトは以下で指定されています。
デフォルト値が設定されていないので基本的に0が入ります。

colormapsettingcontainer.cpp
ColorMapSettingContainer::ColorMapSettingContainer() :
	CompositeContainer({&transitionMode, &valueMode, &autoValueRange, &minValue, &maxValue, &fillUpper, &fillLower, &colorTableMinValue, &legend}),
	transitionMode {"transitionMode"},
	valueMode {"valueMode"},
	autoValueRange {"autoValueRange"},
	minValue {"minValue"},
	maxValue {"maxValue"},
	fillUpper {"fillUppeer"},
	fillLower {"fillLower"},
	colorTableMinValue {"colorTableMinValue"},
	legend {}

凡例に関わる属性値

凡例に関わる属性値のデフォルトは以下で指定されています。
カラーマップの表示に関わる属性値とは違いデフォルトの値が指定されているため設定ファイルでの指定がない場合、この値が使用されます。

colormaplegendsettingcontainer.cpp
ColorMapLegendSettingContainer::ColorMapLegendSettingContainer() :
	CompositeContainer({&visible, &direction, &barAutoWidth, &barWidth, &barAlign, &title, &autoNumberOfLabels, &numberOfLabels, &labelSkipRate, &labelFormat, &titleFont, &labelFont, &titleColor, &labelColor, &backgroundColor, &backgroundOpacity, &showBorder, &imageSetting}),
	visible {"visible", true},
	direction {"direction", Direction::Vertical},
	barAutoWidth {"barAutoWidth", false},
	barWidth {"barWidth", 30},
	barAlign {"barAlign", BarAlign::Center},
	title {"title"},
	autoNumberOfLabels {"autoNumberOfLabels", true},
	numberOfLabels {"numberOfLabels"},
	labelSkipRate {"labelSkipRate", 1},
	labelFormat {"labelFormat", "%5.2f"},
	titleFont {"titleFont", QFont("MS UI Gothic", 14)},
	labelFont {"labelFont", QFont("MS UI Gothic", 11)},
	titleColor {"titleColor", Qt::black},
	labelColor {"labelColor", Qt::black},
	backgroundColor {"backgroundColor", Qt::white},
	backgroundOpacity {"backgroundOpacity", 20},
	showBorder {"showBorder", true},
	imageSetting {},
	m_colorMapSetting {nullptr},
	m_delegateMode {false},
	m_imageBuilder {new ImageBuilder {this}}

opacitycontainer.cpp
OpacityContainer::OpacityContainer(const QString& name, int defaultVal) :
	CompositeContainer({&enabled, &percent}),
	enabled {"enabled", true},
	percent {"percent", defaultVal}
{
	addPrefix(name);
}

imagesettingcontainer.cpp
ImageSettingContainer::ImageSettingContainer() :
	CompositeContainer({&position, &horizontalMargin, &verticalMargin, &autoSize, &width, &height}),
	position {"position", Position::TopLeft},
	horizontalMargin {"horizontalMarginRatio", 0},
	verticalMargin {"verticalMarginRatio", 0},
	autoSize {"autoSize", false},
	width {"width", 100},
	height {"height", 100},
	m_actor {nullptr},
	m_imageBuilder {nullptr},
	m_controller {new Controller {this}},
	m_negativePositionForbidden {false},
	m_autoSizeForced {false},
	m_setting {this}

整数値のスカラーのカラーマップに関わるデフォルト値

今回、この記事では整数値のスカラーの話題は割愛していましたが、メモとして書いておきます。
以下のファイルに記載されています。

colormapenumeratelegendsettingcontainer.cpp
ColorMapEnumerateLegendSettingContainer::ColorMapEnumerateLegendSettingContainer() :
	CompositeContainer({&visible, &direction, &barAutoWidth, &barWidth, &barAlign, &title, &titleFont, &labelFont, &titleColor, &labelColor, &backgroundColor, &backgroundOpacity, &showBorder, &imageSetting}),
	visible {"visible", true},
	direction {"direction", Direction::Vertical},
	barAutoWidth {"barAutoWidth", false},
	barWidth {"barWidth", 30},
	barAlign {"barAlign", BarAlign::Center},
	title {"title"},
	titleFont {"titleFont", QFont("MS UI Gothic", 14)},
	labelFont {"labelFont", QFont("MS UI Gothic", 11)},
	titleColor {"titleColor", Qt::black},
	labelColor {"labelColor", Qt::black},
	backgroundColor {"backgroundColor", Qt::white},
	backgroundOpacity {"backgroundOpacity", 20},
	showBorder {"showBorder", true},
	imageSetting {},
	m_colorMapSetting {nullptr},
	m_delegateMode {false},
	m_imageBuilder {new ImageBuilder {this}}

実際に属性を指定しないとどうなるか

iRICのデフォルトのカラーマップ設定に属性を全く指定しない設定ファイルをインポートしてみます。

デフォルト設定はこんなかんじです。
スカラーは最小値0m最大値12mの標高です。

image.png

デフォルト設定をエクスポートするとこんな感じになっています。

<?xml version="1.0" encoding="UTF-8"?>
<ColorMapSetting 
transitionMode="0" 
valueMode="1" 
autoValueRange="true" 
minValue="0" 
maxValue="12" 
fillUppeer="true" 
fillLower="true" 
colorTableMinValue="0" 
visible="true" 
direction="1" 
barAutoWidth="false" 
barWidth="30" 
barAlign="1" 
title="Elevation(m)" 
autoNumberOfLabels="true" 
numberOfLabels="2" 
labelFormat="%5.2f" 
titleFont="Century Gothic,14,-1,5,50,0,0,0,0,0,Regular" 
labelFont="Century Gothic,14,-1,5,50,0,0,0,0,0,Regular" 
titleColor="#000000" 
labelColor="#000000" 
backgroundColor="#ffffff" 
backgroundOpacityEnabled="true" 
backgroundOpacityPercent="20" 
showBorder="true" 
position="7" 
horizontalMarginRatio="0" 
verticalMarginRatio="0.1" 
width="300" 
height="200">
    <Item value="0" color="#0000ff" transparent="false"/>
    <Item value="0.25" color="#00ffff" transparent="false"/>
    <Item value="0.5" color="#00ff00" transparent="false"/>
    <Item value="0.75" color="#ffff00" transparent="false"/>
    <Item value="1" color="#ff0000" transparent="false"/>
</ColorMapSetting>

上記の設定ファイルのColorMapSetting要素の属性を全部削除して保存します。

<?xml version="1.0" encoding="UTF-8"?>
<ColorMapSetting>
    <Item value="0" color="#0000ff" transparent="false"/>
    <Item value="0.25" color="#00ffff" transparent="false"/>
    <Item value="0.5" color="#00ff00" transparent="false"/>
    <Item value="0.75" color="#ffff00" transparent="false"/>
    <Item value="1" color="#ff0000" transparent="false"/>
</ColorMapSetting>

属性を全て削除した設定ファイルをインポートすると以下のようになりました。

image.png

インポート後の設定をエクスポートするとこんなかんじです。

<?xml version="1.0" encoding="UTF-8"?>
<ColorMapSetting 
transitionMode="0" 
valueMode="0" 
autoValueRange="false" 
minValue="0" 
maxValue="0" 
fillUppeer="false" 
fillLower="false" 
colorTableMinValue="0" 
visible="true" 
direction="1" 
barAutoWidth="false" 
barWidth="30" 
barAlign="1" 
title="" 
autoNumberOfLabels="true" 
numberOfLabels="0" 
labelFormat="%5.2f" 
titleFont="MS UI Gothic,14,-1,5,50,0,0,0,0,0" 
labelFont="MS UI Gothic,11,-1,5,50,0,0,0,0,0" 
titleColor="#000000" 
labelColor="#000000" 
backgroundColor="#ffffff" 
backgroundOpacityEnabled="true" 
backgroundOpacityPercent="20" 
showBorder="true" 
position="4" 
horizontalMarginRatio="0" 
verticalMarginRatio="0" 
width="100" 
height="100">
    <Item value="0" color="#0000ff" transparent="false"/>
    <Item value="0.25" color="#00ffff" transparent="false"/>
    <Item value="0.5" color="#00ff00" transparent="false"/>
    <Item value="0.75" color="#ffff00" transparent="false"/>
    <Item value="1" color="#ff0000" transparent="false"/>
</ColorMapSetting>

以下にインポート前後の設定の比較画像を示します。
image.png

元々の設定ではvalueMode(値と色の関係)が1:値の範囲に合わせて自動調整だったのでItemvalueが、0~1の割合で設定されていましたが、valueModeを指定しなかったことで0:手動で設定に設定され、指定していた割合がそのまま数値として扱われてしまっていたりしますね。
その他にもfillUpperfillLowerなどもやはり0が指定されています。
titleについては消えていますね。

こんな感じで属性値を指定しないと予期せぬ事が起きるかもしれませんのでできるだけ属性はちゃんと指定しましょう

それか指定していない属性についてはインポート時に読み込まないようにしましょう。
例えば凡例の表示に関する属性だけ指定した設定ファイルを作成して、インポート時に凡例の設定のみインポートするようにチェックボックスで指定するといったかたちです。

デフォルト値一覧

それでも、「指定したい値とデフォルトの値が一緒で指定するだけ無駄なのでしたくない」という方もいるかもしれないので、設定ファイルで指定する形式でデフォルトの値を整理しました。
上記で紹介したデフォルト値はC++での指定形式なので、設定ファイル(XML形式での値です)。

要素 内容 デフォルト値
transitionMode カラーマップ表示のモード 0:グラデーションモード
valueMode 値と色の関係 0:手動で設定
autoValueRange 値の範囲の自動設定 false:しない
minValue 値の範囲の最小値 0
maxValue 値の範囲の最大値 0
fillUppeer 最小値以上を描画 false:しない
fillLower 最小値以下を描画 false:しない
colorTableMinValue transitionMode=1(区間別モード)の時の表示色テーブルの一番下の行の最小値の値 0
visible 凡例の表示 true:する
direction 凡例の向き 1:縦
barAutoWidth 凡例のカラーバーの幅の自動調整 false:しない
barWidth 凡例のカラーバーの幅 30
barAlign 凡例の整列 1:中央寄せ
title 凡例のタイトル ""
autoNumberOfLabels ラベルの数の自動設定 true:する
numberOfLabels ラベルの数
設定ファイルで指定した値+2個のラベルが表示される
0
labelSkipRate ラベルの間引き
指定した値おきにラベルが表示される
区間別モードで使用
1
labelFormat ラベルの表示形式 "%5.2f"
titleFont 凡例タイトルのフォント "MS UI Gothic,14,-1,5,50,0,0,0,0,0"
labelFont ラベルのフォント "MS UI Gothic,11,-1,5,50,0,0,0,0,0"
titleColor 凡例タイトルの文字色 #000000
labelColor ラベルの文字色 #000000
backgroundColor 凡例の背景色 #ffffff
backgroundOpacityEnabled 凡例の背景色の透過 true:する
backgroundOpacityPercent 凡例の背景色の透過率 20
showBorder 凡例の枠線の描画 true:する
false:しない
position 凡例の位置 4:左上
horizontalMarginRatio 基準からの水平距離(%) 0.0
verticalMarginRatio 基準からの垂直距離(%) 0.0
autoSize 凡例サイズを自動調整するか false:しない
width 凡例の幅 100
height 凡例の高さ 100

Itemの属性は以下のとおりです。

要素 内容 デフォルト値
value グラデーションモードの場合の列の値
区間別モードの場合の最大値の値
0.00
color 値に対応する色 #000000
transparent 色を透明にするか
※区間別モード時に使用される値です。
false:しない
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?