表と行列

Column[list]要素の列としてタイプセットする
Grid[list]要素の格子としてタイプセットする
TableForm[list]表形式で出力する

表と行列の表示形を使ったリスト要素の出力書式の設定

表示例に使う数値リストを作っておく.
In[1]:=
Click for copyable input
Out[1]=
Gridはリストを表形式でタイプセットする.
In[2]:=
Click for copyable input
Out[2]=
TableFormでリストを表形式で表示する.
In[3]:=
Click for copyable input
Out[3]//TableForm=

GridColumnは評価しないラッパーであるが,内容を適切な形式にタイプセットする.これらはタイプセットするコンストラクトであり,フロントエンドでの正確な描画を必要とする.

Columnは1列のGridのことである.
In[4]:=
Click for copyable input
Out[4]=
GridまたはColumnFullFormは頭部が不活性であることを示す.
In[5]:=
Click for copyable input
Out[5]//FullForm=
これらのラッパーはすべて,グラフィカルなデータを含むどのような種類のデータをあらわすためにも使用できる.
In[6]:=
Click for copyable input
Out[6]=
PaddedForm[Column[list],tot]tot 桁に十分なスペースを持つようすべての数が充填された列を出力する
PaddedForm[Grid[list],tot]tot 桁に十分なスペースを持つようすべての数が充填された表を出力する
PaddedForm[Grid[list],{tot,frac}]すべての近似実数において小数点以下に frac 桁置く

数の右揃え表型表示

数値リストを作っておく.
In[7]:=
Click for copyable input
Out[7]=
Columnでリストを1列表示する.
In[8]:=
Click for copyable input
Out[8]=
桁数が小さすぎるときは数値手前にスペースをあてがうことで表示桁長を20桁にし,右揃えの列表示をする.
In[9]:=
Click for copyable input
Out[9]//PaddedForm=
この場合は,Alignmentオプションを使って数を揃えることもできる.
In[10]:=
Click for copyable input
Out[10]=
合計8桁,小数点以下5桁の右揃えにする.
In[11]:=
Click for copyable input
Out[11]//PaddedForm=
SpanFromLeft左側の要素から伸張する
SpanFromAbove上の要素から伸張する
SpanFromBoth上でかつ左の要素から伸張する

Gridで伸張を表すために使われるシンボル

Gridは,第1引数に矩形行列を取る.Gridの各々の要素は伸張する領域を指定することにより,複数の行・列,または矩形の部分格子に渡り伸張することができる.伸張要素は常に伸張領域の左上隅で指定され,残りの領域は適切な伸張記号で埋められる.

以下は伸張する行を示す.伸張する部分はSpanFromLeftを使って埋められる.
In[12]:=
Click for copyable input
Out[12]=
同様に,列はSpanFromAboveを使って伸張することができる.
In[13]:=
Click for copyable input
Out[13]=
矩形の伸張領域を指定する場合,伸張要素の下かつ右のすべての要素でSpanFromBothが使われる.
In[14]:=
Click for copyable input
Out[14]=
オプション名
デフォルト値
BackgroundNone使用する背景色
BaselinePositionAutomatic周囲のテキストベースラインに何を揃えるか
BaseStyle{}格子のベーススタイル指定
FrameNone格子のどこに枠を描画するか
FrameStyleAutomatic枠に使用するスタイル

Grid全体の動作に影響を及ぼすオプションの例

FrameオプションはGrid全体の周りに枠を指定することができる.
In[15]:=
Click for copyable input
Out[15]=
FrameStyleを使って枠の外観を変更する.
In[16]:=
Click for copyable input
Out[16]=
Backgroundを使ってGrid全体の背景色を指定する.
In[17]:=
Click for copyable input
Out[17]=
周囲に対するGrid位置はBaselinePositionオプションを使って調整することができる.
In[18]:=
Click for copyable input
Out[18]=
次は格子の底辺とベースラインを揃える.
In[19]:=
Click for copyable input
Out[19]=
以下はGrid全体のベーススタイルをSubsectionスタイルに設定する.
In[20]:=
Click for copyable input
Out[20]=

Columnは1列のGridを指定することに等しい.この2つの関数は類似しているので,どちらにも同じオプションが使える.

Columnに対してGridオプションを設定する.
In[21]:=
Click for copyable input
Out[21]=
オプション
デフォルト値
Alignment{Center,Baseline}項目を水平・垂直方向で揃える
DividersNone格子のどこに仕切り線を引くか
ItemSizeAutomatic各項目の幅と高さ
ItemStyleNone列と行のスタイル
Spacings{0.8,0.1}水平・垂直方向のスペース

Gridの列と行に影響するオプションの例

個々の行および列に影響を及ぼすGridのオプションはすべて同様なシンタックスを持つ.オプションはとして指定することができる.ここで x は列すべてに適用され,y はすべての行適用される.また,xy は単独の値,あるいは各列または行を交代で表す値のリストである.

Alignment設定がない場合,要素は水平方向では中心に,垂直方向ではベースラインに揃う.
In[22]:=
Click for copyable input
Out[22]=
以下で,列の水平方向の整列を右に揃えるよう変更する.
In[23]:=
Click for copyable input
Out[23]=
各列の水平方向の整列を別々に設定する.
In[24]:=
Click for copyable input
Out[24]=

BackgroundあるいはItemStyleオプションが,行と列について異なる設定を指定する場合,フロントエンドは行と列がオーバーラップする設定を組み合わせる.

以下は緑の行がどのようにさまざまな色と組み合わされるかを示している.
In[25]:=
Click for copyable input
Out[25]=
以下の例は,行と列の両方で指定されたスタイルをItemStyleがどのように組み合わせることができるかを示している.
In[26]:=
Click for copyable input
Out[26]=

複数の行や列に渡って個々の行と列の指定を繰り返したい場合は,リストでラップするとよい.繰り返される要素は,必要なだけ使われる.リストに複数の要素をラップする場合,全体のリストが順に繰り返される.

赤い仕切り線が繰り返される.
In[27]:=
Click for copyable input
Out[27]=
ここでは,赤と黒の仕切り線が順に繰り返される.
In[28]:=
Click for copyable input
Out[28]=

ItemSizeSpacingsの両オプションは,水平方向はemで,垂直方向は現行のフォントに基づく線の高さで測定する.また,どちらのオプションもScaled座標を取ることができる.これは,座標が合計のセルの幅あるいはウィンドウの高さを指定するものである.ItemSizeオプションでは,キーワードFullを使うことにより,指定された行または列の要素すべてにフィットするのに必要なスペースを要求することができる.

すべての項目の幅を3emに,高さを1ラインハイトにする.
In[29]:=
Click for copyable input
Out[29]=
フォントの大きさを変更すると,異なる大きさで表示される.
In[30]:=
Click for copyable input
Out[30]=
以下の例のボタンは,常にセルの幅の4分の1の大きさになる.
In[31]:=
Click for copyable input
Out[31]=
Spacingsの最初と最後の設定は,上と下のスペースを2分の1に指定する.
In[32]:=
Click for copyable input
Out[32]=
オプション
デフォルト値
Alignment{Center,Baseline}項目を水平・垂直方向で揃える
BackgroundNone使用する背景色
BaseStyle{}項目のベーススタイルの指定
FrameNone項目のどこに枠を描画するか
FrameStyleAutomatic枠に使用するスタイル
ItemSizeAutomatic各項目の幅と高さ

Itemのオプションの例

行および列全体に適用することのできる設定の多くは,Itemラッパーを使ってGridまたはColumnの要素に個別に適用することもできる.Itemを使うと,1つの項目ごとにこれらの設定を変更することができる.Itemレベルで指定された設定は,常にGridあるいはColumnからの全体としての設定をオーバーライドする.

以下で左下の要素に対する項目特定のオプションを設定する.
In[33]:=
Click for copyable input
Out[33]=
Itemに対するBackground設定は,Columnの設定をオーバーライドする.
In[34]:=
Click for copyable input
Out[34]=

Itemのオプションの多くは,それに対するGridでの設定と同じ設定を取る.しかし,Gridにおいて複雑な行および列を許可するオプションのAlignmentおよびItemSizeItem設定だけしか取らない.

次で,項目の領域をより大きくし,テキストの整列方法を指定する.
In[35]:=
Click for copyable input
Out[35]=
ItemSizeオプションの幅の値は改行を決定するために使われる.
In[36]:=
Click for copyable input
Out[36]=
ここでItemSizeは,最小の高さを2行分と指定しているが,項目はそれより大きい.
In[37]:=
Click for copyable input
Out[37]=

高次元データのフォーマット

Columnは一次元データを,Gridは二次元データをサポートする.任意次元の配列を出力するためには,TableFormを使うことができる.

要素の2×2の配列を均等間隔で表示する.
In[39]:=
Click for copyable input
Out[39]//TableForm=
2×2×2配列を表示する.
In[40]:=
Click for copyable input
Out[40]//TableForm=
さらに,2×2×2×2配列を表示する.
In[41]:=
Click for copyable input
Out[41]//TableForm=

次元の表の表示において,通常,次に続く次元は入れ替りで列,そして,行に割り付けられる.TableDirections->{dir1,dir2,}の設定条件を与えておけば(ここで, は,ColumnRowを指定する),数値を次元別に列方向,または,行方向に並べることが可能である.デフォルトでは, {Column,Row,Column,Row,}と交互に並べられる.

並び方向を決めるオプションTableDirectionsを使い,多次元の配列要素の表の構成を指定する.
In[42]:=
Click for copyable input
Out[42]//TableForm=

TableFormは「不揃いな」配列を扱うことができる.要素が与えられていないときは空欄のままとなる.

TableFormなら配列が不揃いでも表示できる.
In[43]:=
Click for copyable input
Out[43]//TableForm=
「副次的な表」を混ぜて表示することも可能である.
In[44]:=
Click for copyable input
Out[44]//TableForm=

オプションTableDepthを使うと,TableFormで表示するリストの最大ネストレベルを指定することができる.

TableFormで表示するが,第2レベル(二次元)以上は表示しないよう指定しておく.サブリストは表の単一の要素として扱われる.
In[45]:=
Click for copyable input
Out[45]//TableForm=
オプション
デフォルト値
TableDepthInfinity表に含む最大レベル数(次元数)を指定する
TableDirections{Column,Row,Column,}各レベル(次元)を行にするか列にするか指定する
TableAlignments{Left,Bottom,Left,}各レベルの入力要素をどの方向に寄せて並べるか指定する
TableSpacing{1,3,0,1,0,}要素と要素の間隔をスペース記号換算で指定する
TableHeadings{None,None,}各レベルに付けるラベルを指定する

TableFormの設定条件

表の要素配置TableAlignmentsを設定することで,表の各入力要素を行や列の辺に合わせて並べることが可能になる.列合せの指定では,左,中央,右(LeftCenterRight)を指定することができる.また,行合せでは,下,中央,上(BottomCenterTop)を指定することができる.TableAlignments->Centerと指定すれば,表の全要素が水平・垂直方向で中央に揃えることができる.デフォルトの揃え方に戻すには,TableAlignments->Automaticにする.

通常,表の列要素は左揃えになる.
In[46]:=
Click for copyable input
Out[46]//TableForm=
中央揃えにする.
In[47]:=
Click for copyable input
Out[47]//TableForm=

表の要素間隔TableSpacingを使うと隣接要素の水平・垂直間隔をスペース記号の単位で指定できる.とすれば,間隔なしになる.

列と列の間をスペース記号6個分にし,行と行の間は間隔なしにする.
In[48]:=
Click for copyable input
Out[48]//TableForm=
Noneラベルを付けない
Automatic番号ラベルを付ける
{{lbl11,lbl12,},}任意のラベルを各レベルに付ける

オプションTableHeadingsの設定

2×2×2配列に番号ラベルを付ける.
In[49]:=
Click for copyable input
Out[49]//TableForm=
行には番号ラベルを付け,列には指定の文字列ラベルを付ける.
In[50]:=
Click for copyable input
Out[50]//TableForm=
行にだけラベルを付ける.3番目のラベルに相当する行がないので,TableFormは自動的に空の行を挿入する.
In[51]:=
Click for copyable input
Out[51]//TableForm=