图形结构

"图形和声音" 讨论了如何用 PlotListPlot 等函数绘制函数和数据的图形. 本节讨论 Wolfram 语言如何表示这些图形, 如何编程去生成更复杂的图形.

基本思想是 Wolfram 语言用图形基元的集合表示所有图形. 图形基元包括代表图像基本元素的 Point (点), Line (线) 和 Polygon (多边形), 以及 RGBColorThickness 等指令.

这里生成了一列点的图形.
In[1]:=
Click for copyable input
Out[1]=
InputForm 告诉 Wolfram 语言如何表示图形. 每个点被表示为一个 Point 图形基元的坐标形式. 本例中使用的所有图形选项也被给出.

在 Wolfram 语言中, 每个完整的图形块都用图形对象表示. 图形对象的种类很多, 分别对应于不同类型的图形. 每类图形对象都有确定的头部以表明它的类型.

Graphics[list]生成二维图形
Graphics3D[list]生成三维图形

Wolfram 语言的图形对象.

PlotListPlot 等在 "图形和声音的结构" 中讨论的函数都是按照先建立 Wolfram 语言内部图形对象, 然后显示它们的顺序工作的.

在 Wolfram 语言中, 用户可以自行建立图形对象产生其它类型的图像. 由于在 Wolfram 语言中的图形对象是符号表达式, 所以能用所有的 Wolfram 语言标准函数对其进行操作.

图形对象在输出时被 Wolfram 语言前端自动格式化成图形形式. 图形也可以用 Print 命令以副产品形式输出.

对象 Graphics 被 Wolfram 语言计算, 但分号阻止了它的输出.
In[3]:=
Click for copyable input
Out[3]=
可以使用 Print 命令以副产品形式输出图形 . 副产品形式的图形在输出时没有标签 Out[].
In[4]:=
Click for copyable input
Out[4]=
Show[g, opts]显示由新的选项 opts 指定的一个图形对象
Show[g1,g2,]显示由选项 等指定的多个图形对象的组合
Show[g1,g2,,opts]显示由新的选项 opts 指定的多个图形对象

显示图形对象.

Show 可用于改变已生成图形的选项, 也可用于合并多幅图形.

这里用 Show 来调整一个已有图形的 Background 选项.
In[5]:=
Click for copyable input
Out[5]=
这里用 Show 来合并两幅图形. PlotRange 和其它选项所用的值都由第一副图形决定.
In[6]:=
Click for copyable input
Out[6]=
这里对整幅图形指定新的选项.
In[7]:=
Click for copyable input
Out[7]=
图形指令范例: RGBColor, Thickness
图形选项范例: PlotRange, Ticks, AspectRatio, ViewPoint

修改图形的局部和全局方式.

给定一个图形基元列表后, Wolfram 语言提供了两种方式去修改最终的图形. 首先, 可以在图形基元列表中插入一些图形指令, 例如 RGBColor, 以修改随后列表中的图形基元. 用这种方式, 用户可以指定如何修改一个给定的图形基元列表.

这里创建了一个包含 Polygon 图形基元的二维图形对象.
In[8]:=
Click for copyable input
Out[8]=
InputForm 完整地显示了图形对象.
这里用了上面创建的图形基元, 并增加了图形指令 RGBColorEdgeForm.
In[10]:=
Click for copyable input
Out[10]=

通过插入图形指令, 可以指定图形基元的显示方式. 然而, 用户往往经常会希望通过全局修改来改变整个图形的显示. 使用图形选项可以达到这一目的.

通过增加图形选项 Frame 用户可以修改图形的整体外观.
In[11]:=
Click for copyable input
Out[11]=
InputForm 显示了选项被对象 Graphics 所采用.

Show 中可以指定图形选项. 因此, 一个直截了当的方式是取一个图形对象, 然后选择不同的图形选项将其显示.

然而应注意到 Show 总是返回已显示的图形对象. 如果在 Show 中指定图形选项, 这些选项就会自动的插入在 Show 返回的图形对象中. 于是, 除非明确指定其它的图形选项, 对相同的对象再次使用 Show 显示的图形将是相同的. 在任何情况下, 新指定的选项会覆盖既有的选项.

Options[g]对一个图形对象给出一个图形选项列表
Options[g,opt]给出某个选项的设置

找出图形对象的选项.

一些图形选项可以用作产生图形的可视化函数的选项. 对于取 Automatic 的选项有时会被可视化函数赋以特定值.

这是一个图形.
In[13]:=
Click for copyable input
Out[13]=
Wolfram 语言使用内部算法为输出图形的 PlotRange 计算出一个特定值.
In[14]:=
Click for copyable input
Out[14]=
FullGraphics[g]将图形选项指定的对象转化为明确的图形基元列表

确定图形块的完全形式.

Axes 等图形选项, Wolfram 语言的前端会自动画出用户需要的坐标轴等对象. 这些对象由选项值表示, 而非被确定的图形基元列表表示. 然而, 用户会需要要找到代表这些对象的图形基元列表. 函数 FullGraphics 给出不使用任何选项的情况下, 生成图形的完整的图形基元列表.

这里画出了一列值.
In[15]:=
Click for copyable input
Out[15]=
FullGraphics 生成了包括代表坐标轴等的图形基元的一个图形对象.
In[16]:=
Click for copyable input
Out[16]//Short=