图形和声音
Plot[f,{x,xmin,xmax}] | 在区间 (xmin, xmax) 上画出以 x 为自变量的方程 f 的图形 |
Plot[{f1,f2,…},{x,xmin,xmax}] | 将多个方程的图形画在一起 |
通过使用 Exclusions 选项可以忽略图线中的奇异点:
下面将对微分方程求解,参见"微分方程数值解的介绍":
在 Wolfram 语言为您绘图时,必须做出多个选择. 例如需要确定应该是什么比例,应在哪里采样函数,应如何绘制轴等. 大多数时候,Wolfram 语言可能会做出不错的选择. 但是,您想为特定目的获得最好的图像,则可能需要帮助 Wolfram 语言做出一些选择.
在 Wolfram 语言函数中有通用方法来指定“选项”. 每个选项有特定的名称. 例如作为 Plot 函数的最后一个参数,您可以用 name->value 形式包含一系列规则,来指定不同选项的值. 任何您未给出明确规则的选项都将采用其“默认”的值.
Plot[f,{x,xmin,xmax},option->value] | 绘图,为某个选项指定特定值 |
例如 Plot 之类的函数可以设置许多选项. 通常您仅仅需要一次使用其中几个. 如果您想优化特定的绘图,可能最好是先尝试各种选项的一系列不同设置.
每次生成绘图时,您可以指定其选项. 在"重画和组合图形"部分还将讨论如何在生成绘图后还可以再更改某些选项.
选项名
|
默认值
| |
AspectRatio | 1/GoldenRatio | 绘图的高宽比,Automatic 表示自动根据 和 坐标绝对值进行设置 |
Axes | True | 是否包括轴 |
AxesLabel | None | 贴在轴上的标签,ylabel 指定 轴标签, {xlabel,ylabel} 指定两轴标签 |
AxesOrigin | Automatic | 轴相交的点 |
BaseStyle | {} | 用于绘图的默认样式 |
FormatType | TraditionalForm | 用于绘图中文本的默认格式类型 |
Frame | False | 是否在绘图周围加画框 |
FrameLabel | None | 框架周围要贴的标签,从下 轴开始按顺时针顺序给出列表 |
FrameTicks | Automatic | 有框时要画什么刻度线,None 表示无 |
GridLines | None | 包括哪些网格线, Automatic 自动为每个主要刻度线包括一条网格线 |
PlotLabel | None | 要作为绘图标签打印的表达式 |
PlotRange | Automatic | 要包括在绘图中的坐标范围; All 表示包括所有点 |
Ticks | Automatic | 有轴时要画什么刻度线,None 表示不表示 |
为 和 轴指定标签. 作为标签给出的表达式的打印方式与显示为 TraditionalForm 的 Wolfram 语言输入相同. 您可以将任何文本放置在双引号中:
Wolfram 语言绘制图时,会尝试将 和 比例设置为仅包含绘图中“感兴趣”的部分. 如果您的函数快速增加或具有奇异性,则将切除其过大的部分. 通过指定 PlotRange 选项,您可精确控制在绘图中包括哪些 和 坐标范围.
PlotRange 选项的设定.
PlotRange 选项的设置为图形提供了对 的明确限制. 使用所指定的 限制,将切除曲线的底部:
Wolfram 语言始终尝试将函数绘制为平滑曲线. 因此,在函数反复摆动的地方,Wolfram 语言将使用更多的点. 通常,Wolfram 语言会尝试使您对函数的采样适应函数的形式. 但是,您可以设置限制,即 Wolfram 语言对函数进行采样的精确程度.
重要的是要意识到,由于 Wolfram 语言只能在有限的点上对函数进行采样,因此它始终会丢失函数的功能. Wolfram 语言对功能进行自适应采样,增加了有趣特征附近的采样数量,但是仍然有可能遗漏某些部分. 通过增加 PlotPoints,可以使 Wolfram 语言在更多的点上对函数进行采样. 当然,将 PlotPoints 设置得越大,Wolfram 语言绘制任何函数(甚至是平滑函数)所花费的时间就越长.
选项名
|
默认值
| |
PlotStyle | Automatic | 每个曲线要使用的图形图元列表的列表(请参见 "图形指令和选项") |
ClippingStyle | None | 修剪曲线时要绘制什么 |
Filling | None | 插入每个曲线下的填充 |
FillingStyle | Automatic | 用于填充的样式 |
PlotPoints | 50 | 采样函数的初始点数 |
MaxRecursion | Automatic | 允许的最大递归细分数 |
用 PlotStyle 指定一条虚线曲线:
绘制多个函数时,列表中的 PlotStyle 设置将依次用于每个功能:
当 PlotStyle 包含子列表时,将合并设置:
默认情况下,设置 PlotRange 时不显示任何内容,以便其剪切曲线:
将 ClippingStyle 设置为列表可定义在顶部和底部切除的零件的样式:
Show[plot,option->value] | 改变选项重画图形 |
Show[plot1,plot2,…] | 将若干图形画在一起 |
GraphicsGrid[{{plot1,plot2,…},…}] | 画图形列阵 |
InputForm[plot] | 显示某个图形的文本描述信息 |
通过使用带有不同的选项序列的Show, 用户可以用不同的方式察看同一个图形. 例如,当试图找出选项的最好设置时,用户会这样做.
Wolfram 语言的所有图形都是表达式,起操控方式与其他表达式相同. 这些操控不要求使用 Show.
GraphicsGrid[{{plot11,plot12,…},…}] | 画图形方阵 |
GraphicsRow[{plot1,plot2,…}] | 在一行画几个图形 |
GraphicsColumn[{plot1,plot2,…}] | 在一列画几个图形 |
GraphicsGrid[plots,Spacings->{h,v}] | 指定图形之间的水平和垂直距离 |
如果使用 Show 重新显示一个图形阵列,指定的任何选项将用于整个阵列,而不是个别图形:
缺省的 GraphicsGrid 在阵列中每个图形的周围只留出狭窄的空白边缘. 用户可以通过设置选项Spacings->{h,v} 改变边缘的大小. 参数 h 和 v 给出要用的水平和垂直空间. 缺省的 Spacings 选项使用字体缺省的字符的宽度和高度来调整参数 h 和 v ,但是使用 Scaled 坐标往往更有效. Scaled 给出高度和宽度,值 1 代表一个单元格的宽度和高度.
在画图的时候 Wolfram 语言保存了所使用的点的列表及其他一些信息. 利用所保存的信息,可以用 Show 画出不同方式的图形. 但是用户应当意识到无论指定什么选项,Show 画图时所使用的基本点集是相同的. 例如,如果设置选项使Wolfram 语言显示原图放大后的一小部分,用户或许会看到 Plot 使用的一个个样本点. 类如 PlotPoints 这样的选项只能在最初的 Plot 命令中设置. (Wolfram 语言总是使用实际上已有的点画图; 避免使用平滑或样条曲线,因为那样会给出数学图形的误导结果.)
显示该图形放大后的一小部分. 在这种分辨率下,用户能看到由最初的 Plot 命令生成的逐个的线段:
Plot3D[f,{x,xmin,xmax},{y,ymin,ymax}] | |
画出以 x 和 y 为自变量的函数 f 的图形 |
将鼠标在图形内部拖动,用户可以对三维图像进行旋转. 在图像内部拖动鼠标使得图像跟随鼠标移动方向翻滚,在图像边缘拖动鼠标使得图像在显示屏的平面上旋转. 按住 Shift 键拖动图像设的图像平移. 用 Ctrl 键使图像放大或缩小.
在 Wolfram 系统中,三维图形有许多选项. 本节讨论部分选项,其余的将在 "图形和声音的结构" 中讨论.
选项名称
|
缺省值
| |
Axes | True | 是否包含坐标轴 |
AxesLabel | None | 坐标轴上加标签: zlabel 指定 轴的标签,{xlabel,ylabel,zlabel} 指定每个轴的标签 |
BaseStyle | {} | 绘图使用的系统默认风格 |
Boxed | True | 是否在曲面周围画三维盒框 |
FaceGrids | None | 在盒框的边界面上画网格的方式;All 表示在每个面上都画网格 |
LabelStyle | {} | 标签风格 |
Lighting | Automatic | 使用模拟光线给区面上光 |
Mesh | Automatic | 是否在曲面上画出 网格分隔线 |
PlotRange | {Full,Full,Automatic} | 或其他值的范围 |
SphericalRegion | False | 指定是否使得一个围绕该三维边界盒子外侧的球面能装入最终显示的区域 |
ViewAngle | All | 视野角度 |
ViewCenter | {1,1,1}/2 | 中心显示点 |
ViewPoint | {1.3,-2.4,2} | 观察曲面的视点 |
ViewVector | Automatic | 模拟相机的位置和方向 |
ViewVertical | {0,0,1} | 垂直方向 |
BoundaryStyle | Automatic | 如何画曲面的边界线 |
ClippingStyle | Automatic | 如何画曲面剪切区域 |
ColorFunction | Automatic | 如何确定曲面颜色 |
Filling | None | 曲面下方进行填充 |
FillingStyle | Opacity[.5] | 填充风格 |
PlotPoints | 25 | 每个方向上对函数采样的点数; 指定 和 方向的不同点数 |
PlotStyle | Automatic | 曲面风格的制图命令 |
改变选项重画上述图形. 通过这样设置 PlotRange,仅在 范围内的部分图形被显示:
确定在什么位置进行观察或许是画三维曲面最重要的一点. Plot3D 和 Show 的 ViewPoint 选项允许用户指定观察曲面的空间点 . 关于如何定义该点所用的坐标系将在 "三维图形的坐标系" 一节中详细讨论. 用鼠标旋转图像时,用户实际上是在调整 ViewPoint 的值.
ViewPoint 选项也接受代表通用视点的符号值:
{1.3,-2.4,2} | 缺省的视点 |
Front | 向前,沿着 的负方向 |
Back | 向后,沿着 的正方向 |
Above | 向上,沿着 的正方向 |
Below | 向下,沿着 的负方向 |
Left | 向下,沿着 的负方向 |
Right | 向下,沿着 的正方向 |
ViewPoint 选项的典型值.
为了增加三维图形的逼真程度,Wolfram 系统缺省地使用模拟光照模型给三维曲面着色. 缺省情况下,Wolfram 系统假设有四个光源,并且在对象上有照明设备. "亮度和曲面特性" 将介绍如何设置其他光源,以及如何指定对象的反光属性.
光照也可以用一组代表光学特征的字符串来指定. 例如设置 Lighting->"Neutral" 使图像使用白光,这样做可使图像真实地在黑白输出设备如打印机上再现.
本节介绍如何根据数据列表,而不是函数来绘制图形. ("导入和导出数据" 讨论如何从外部文件或程序中读取数据). Wolfram 语言对数据列表的绘图命令与上面讨论的对函数的绘图命令是类似的.
ListPlot[{y1,y2,…}] | 在 x 值为 1,2,… 处画 y1,y2,… |
ListPlot[{{x1,y1},{x2,y2},…}] | 画点 (x1,y1),… |
ListLinePlot[list] | 用线将点连起来 |
ListPlot3D[{{z11,z12,…},{z21,z22,…},…}] | |
画出高度为 zyx 的数组的三维图形 | |
ListPlot3D[{{x1,y1,z1},{x2,y2,z2},…}] | |
在 {xi,yi} 处画出高度为 zi 的三维图形 | |
ListContourPlot[array] | 画等高线图 |
ListDensityPlot[array] | 画密度图 |
"基本画图" 讨论了当给定作为 的函数的 坐标时,如何使用 Wolfram 语言绘制曲线. 用户也能使用 Wolfram 语言绘制参数图形. 在绘制参数图形时,用户给出每个点的 和 坐标,作为第三个参数,比如 ,的函数.
ParametricPlot[{fx,fy},{t,tmin,tmax}] | |
画出参数图形 | |
ParametricPlot[{{fx,fy},{gx,gy},…},{t,tmin,tmax}] | |
把多个参数曲线画在一起 |
ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}] | |
画出三维曲线的参数图形 | |
ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax},{u,umin,umax}] | |
画出三维曲面的参数图形 | |
ParametricPlot3D[{{fx,fy,fz},{gx,gy,gz},…},…] | |
把多个图形画在一起 |
画三维曲线的 ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}] 完全类似于画二维曲线的 ParametricPlot[{fx,fy},{t,tmin,tmax}]. 两种情况下,Wolfram 语言都通过改变参数 t 生成一系列的点,然后连接这些点形成曲线. ParametricPlot 用于生成二维曲线;ParametricPlot3D 用于生成三维曲线.
ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax},{u,umin,umax}] 创建一个曲面,而不是曲线. 该曲面由四边形的集合组成,这些四边形的四个角的坐标相应于 t 和 u 在规则的网格上取值时的 fi 的值.
应当认识到当用 ParametricPlot3D 画曲面时,参数化方法的精确选择往往是至关重要的. 例如,用户应当小心避免使参数法画出的曲面被全部或部分覆盖次数大于1. 多次覆盖常常导致在曲面上画的网格不连贯,并且可能使ParametricPlot3D 花费更长的时间来画出曲面.
正如在 "图形和声音的结构" 一节中所讨论的那样,Wolfram 语言包含了一个完备的图形编程语言. 用这个语言,可以建立许多不同类型的图形.
LogPlot[f,{x,xmin,xmax}] | 生成线性-对数图 |
LogLinearPlot[f,{x,xmin,xmax}] | 生成对数-线性图 |
LogLogPlot[f,{x,xmin,xmax}] | 生成对数-对数图 |
ListLogPlot[list] | 生成数据列表的线性-对数图 |
ListLogLinearPlot[list] | 生成数据列表的对数-线性图 |
ListLogLogPlot[list] | 生成数据列表的对数-对数图 |
DateListPlot[list] | 生成带有日期坐标的数据列表的图形 |
DateListLogPlot[list] | 生成带有日期坐标的数据列表的线性-对数图 |
PolarPlot[r,{t,tmin,tmax}] | 生成半径 r 为角度 t 的函数的极坐标图形 |
SphericalPlot3D[r,{theta,min,max},{phi,min,max}] | |
生成三维球面的图形 | |
RevolutionPlot3D[f,{t,tmin,tmax}] | 生成一个三维回转面 |
BarChart[list] | 画出一列数据的直方图 |
PieChart[list] | 画出一列数据的圆饼图 |
使用 RevolutionPlot3D 使曲线围绕 和 轴旋转:
Wolfram 系统的 标准程序包 中定义了一些可用的绘图函数.
ErrorListPlot[{{x1,y1,dy1},…}] | 生成带有误差棒的图形 |
BoxWhiskerPlot[list] | 生成数据的箱线图 |
ParetoPlot[list] | 生成数据的Pareto图形 |
PairwiseScatterPlot[data] | 生成多变量数据的成对坐标 |
PairwiseScatterPlot 可以用来画出三变量数据的每一对坐标下的图形:
声音播放
例如,正如能使用 Plot[f,{x,xmin,xmax}] 画函数的图形一样,用户也能使用 Play[f,{t,0,tmax}] 来“演奏”一个函数. Play 采用函数来定义声音的波形:函数值给出作为时间函数的声音的振幅.
Play[f,{t,0,tmax}] | 播放振幅为时间 t 的函数 f 的声音,以秒为单位 |
由 Play 生成的声音可以有任何波形. 例如,不必由谐波的集合组成. 一般地,用户给 Play 定义的振幅函数指定了相应于声音的瞬时信号. 这个信号被转换成电压和位移. 注意振幅有时被定义成声音对应的峰值信号;在 Wolfram 系统中,总是作为时间函数的瞬时信号.
Play[f,{t,0,tmax},SampleRate->r] | 播放声音,每秒钟进行 r 次采样 |
通常,采样率越高,声音中的高频成分被演奏的效果越好. 采样率 r 一般允许的频率范围不超过 Hz. 人类的听觉系统一般能分辨的音频范围是20~22000Hz (这依赖于年龄和性别). 钢琴上88个音符的基本频率的范围是27.5~4186Hz.
可以用 Play[{f1,f2,…] 产生立体声. Wolfram 系统通常可以支持任意数量的声道.
ListPlay[{a1,a2,…},SampleRate->r] | 用一系列振幅级播放声音 |
函数 ListPlay 允许用户简单地给出一列值,这些值可以被作为按一定频率采样的声音的振幅.
Wolfram 系统在实际播放声音时,仅允许一定振幅范围的声音. 在 Play 和 ListPlay 中的选项 PlayRange 指定怎样对所给振幅进行处理以适应给定的范围. 该选项的设置与 "图形选项" 一节中所讨论的图形选项 PlotRange 的设置类似.
PlayRange->Automatic | 用一个内部过程来调整振幅 |
PlayRange->All | 将所有振幅调整到允许范围内 |
PlayRange->{amin,amax} | 使 amin 和 amax 之间的振幅调整到允许的范围内,并剪掉其余的部分 |
EmitSound[snd] | 计算时播放声音 |
Sound 对象的输出格式通常被设置为一个可视化的按键,当其被按压时,开始播放声音. 使用 EmitSound,声音可以在无需用户干涉或生成输出结果的情况下播放. 在按压 Sound 键时,内部执行程序实际上是使用的 EmitSound.