表与矩阵

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 是只有一列的 Grid 的缩写.
In[4]:=
Click for copyable input
Out[4]=
GridColumnFullForm 显示其头(head)是不变的.
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 将该列表显示为一列.
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 把矩形矩阵作为其第一个参数. 通过指定跨越区域,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 是只有一列的 Grid 的缩写. 由于这两个函数是相似的,它们可以用相同的选项.

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]=

BackgroundItemStyle 选项对行和列指定不同的设置,在行和列重叠处前端将尝试组合设置.

以下显示绿行如何与各种颜色的列的相组合.
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 选项的ems的水平测量和行高的垂直测量是基于目前的字体设置. 这两个选项也可以采取Scaled 按比例坐标,坐标指定总的单元宽度或窗口高度的比例. 通过使用关键字 FullItemSize 选项也可让您要求尽可能多的空间,使得所有元素都适合给定的行或列.

所有元素均是3个 ems 宽和1个行高.
In[29]:=
Click for copyable input
Out[29]=
相同的例子,但是一个新的字体将以不同的大小显示.
In[30]:=
Click for copyable input
Out[30]=
在这个例子中的按钮大小始终是一个单元格宽度的四分之一.
In[31]:=
Click for copyable input
Out[31]=
Spacings 的第一个和最后一个的设置指定顶部和底部空间的一半.
In[32]:=
Click for copyable input
Out[32]=
选项
缺省值
Alignment{Center,Baseline}水平和垂直对齐项
BackgroundNone使用何种背景颜色
BaseStyle{}项的基本样式规格
FrameNone何处画边框线
FrameStyleAutomatic边框线的样式
ItemSizeAutomatic每项的宽度和高度

Item 的一些选项.

通过使用 Item,适用于整个行和列的许多设置也适用于 GridColumn 中个别的的项. Item 允许您更改一个单项的这些设置. 在 Item 级别上定义的设置总是作为一个整体覆盖 GridColumn 的设置.

以下设置左下角元素的专门选项.
In[33]:=
Click for copyable input
Out[33]=
ItemBackground 设置覆盖了Column 中的设置.
In[34]:=
Click for copyable input
Out[34]=

Item 的大多数选项采取与 Grid 同样的设置. 但是,AlignmentItemSize 选项例外,在 Grid 中允许复杂的行和列设置,在 Item 中只采取 设置.

这指定了一个较大的项的范围,以及文本应如何对齐.
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=

您可以在嵌套列表中控制层次,在 TableForm 中设置选项 TableDepth.

这里 TableForm 只能深入到第二层. 被视为一个单一的表格元素.
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=
这里仅对行标记,不对列标记. TableForm 自动去掉第3个标记,因为没有相关的行.
In[51]:=
Click for copyable input
Out[51]//TableForm=
New to Mathematica? Find your learning path »
Have a question? Ask support »