270 likes | 413 Views
第六章 数据的图形显示和输出. 1. 绘制线 PLOT 2. 绘制多线 OPLOT 3. 绘制文本 XYOUTS 4. 绘制带误差棒的数据图形 5. 在 PostScript 设备上显示图像. 1. 绘制线 PLOT. ● 格式: PLOT, [X,] Y [, 关键字 ] 功能:在当前窗口中,按照指定的格式绘制直线或者曲线。 IDL> x = FINDGEN(101)*(0.01*2.0*!PI) & y = SIN(x) IDL> PLOT, x, y 图 1.1
E N D
1.绘制线PLOT 2.绘制多线OPLOT 3.绘制文本XYOUTS 4. 绘制带误差棒的数据图形 5. 在PostScript设备上显示图像
1. 绘制线PLOT ●格式:PLOT, [X,] Y [, 关键字] 功能:在当前窗口中,按照指定的格式绘制直线或者曲线。 IDL> x = FINDGEN(101)*(0.01*2.0*!PI) & y = SIN(x) IDL> PLOT, x, y 图1.1 IDL> PLOT, x, SIN(x),THICK = 5图1.2 IDL> PLOT, x, x^3, THICK = 3,/YLOG图1.3 IDL> PLOT, x, SIN(x), THICK = 2,MIN_VALU=-0.5, MAX_VALUE=0.5图1.4 ◆BACKGROUND=color_index:用于设置绘制时的背景颜色。在伪彩模式下,color_index为0~40的颜色表;在真彩模式下,color_index为0 ~‘FFFFFF’XL的RGB颜色值。默认值为黑色背景。该值存放在系统变量!P.BACKGROUND中。 ◆COLOR=value:用于设置绘制时的前景颜色。在伪彩模式下,color_index为0~40的颜色表;在真彩模式下,color_index为0 ~‘FFFFFF’XL的RGB颜色值。其默认值为黑色背景。该值存放在系统变量!P.COLOR中。 例如:利用真彩模式,在红色背景下绘制蓝色正弦曲线,可以使用如下命令。 IDL> DEVICE, DECOMPOSED = 1 IDL> x = FINDGEN(101)*(0.01*2.0*!PI) IDL> PLOT, x, SIN(x),BACKGROUND = '0000FF'XL, COLOR = 'FF0000'XL
●格式:PLOT, [X,] Y [, 关键字] 功能:在当前窗口中,按照指定的格式绘制直线或者曲线。 ◆PSYM=integer{0 to 10}:按照指定的图形符号绘制数据点。代码的含义如下: 0 用线绘制 1 加号 2 星号 4 菱形 5 三角形 6 正方形 7 交叉号 8 用户定义 9 未定义 10 柱状图 注意:正代码是指仅在每一个数据点绘制符号;负代码是指在每一个数据点绘制符号的同时,再用线把绘制点连接起来。 例如:绘制0~2π的正弦曲线,其中绘制点使用正方形,并且用线连接起来。IDL> x = FINDGEN(101)*(0.01*2.0*!PI) & PLOT, x, SIN(x),PSYM=-6 ◆SYMSIZE=value:用于设定PSYM指定的符号的大小。 ◆LINESTYLE={0 | 1 | 2 | 3 | 4 | 5}:按照指定的线型绘制线。代码的含义如下: 0 实线 1 点 2 虚线 3 点虚线 4 点点虚线 5 长虚线 例如:绘制0~2π的点点虚线正弦曲线。可以使用如下命令。 IDL> x = FINDGEN(101)*(0.01*2.0*!PI) & PLOT, x, SIN(x),LINESTYLE=4
●格式:PLOT, [X,] Y [, 关键字] 功能:在当前窗口中,按照指定的格式绘制直线或者曲线。 ◆/NOERASE:在当前窗口中绘制新图形时,不擦除原内容。默认擦除原内容 例如:在当前窗口中,绘制0~2π的正弦曲线和余弦曲线。 IDL>x = FINDGEN(101)*(0.01*2.0*!PI) IDL>PLOT, x, SIN(x) & WAIT, 2 & PLOT, x, COS(x), /NOERASE ◆TITLE=string:给绘图区绘制的图形添加一个标题。 ◆SUBTITLE=string:给绘图区绘制的图形添加一个副标题。 例如:绘制0~2π的正弦曲线,并给图形添加一个内容为My Sin(x)的标题。IDL>x = FINDGEN(101)*(0.01*2.0*!PI) & PLOT, x, SIN(x),$ TITLE='title',SUBTITLE='subtitle'
●格式:PLOT, [X,] Y [, 关键字] 功能:在当前窗口中,按照指定的格式绘制直线或者曲线。 ◆POSITION=[X0, Y0, X1, Y1]:把图形定位绘制到[X0, Y0, X1, Y1]指定的区域。 图形的绘图区域存储在系统变量!P.POSITION。 例如:绘制0~2π的正弦曲线和余弦曲线,并绘制到指定的窗口中. WINDOW, /FREE, XSIZE=640, YSIZE=512 & x = FINDGEN(200)*0.1 PLOT, x, SIN(x), POSITION=[0.1, 0.1, 0.45, 0.9] PLOT, x, COS(x), POSITION=[0.55, 0.1, 0.9, 0.9], /NOERASE图1.6 格式:!P.MULTI=[j, k, l, m, n]用法如下: !P.Multi[0]:给出在显示窗口中需要绘制的剩余的图形数目。其默认值为0。 注意:在绘制一个图形时,用户根据需要可以选择关键字/NOERASE。 !P.Multi[1]:给出绘制图形的列数。 !P.Multi[2]:给出绘制图形的行数。 !P.Multi[3]:给出在Z方向上叠加绘制图形的数目,仅适用三维坐标 !P.Multi[4]:给出绘图方式。按行显示图形=0,按列显示图形=1。 例如:在当前窗口中绘制四个图形。可以使用如下命令。 IDL>!P.MULTI=[0, 2, 2, 0, 0] & x = FINDGEN(200)*0.1 IDL>PLOT, x, SIN(x) & PLOT, x, SIN(x)*x^2 IDL>PLOT, x, RANDOMU(1, 200)*x, PSYM=1 PLOT, x ,4.0*!PI*x*0.1, /POLAR图1.7
◆/NODATA:是指只绘制坐标轴,不绘制数据点。◆/NODATA:是指只绘制坐标轴,不绘制数据点。 ◆CHARSIZE=value:用于设置绘制注释和标注字体的大小。 ◆{X | Y | Z}CHARSIZE=value:设置X、Y和Z在轴上注释和标注字体的大小 ◆CHARTHICK=integer:用于设置绘制注释和标注字体的粗细。 ◆FONT=integer:用于设置绘制注释和标注字体所使用的字体系统。-1是指Hershey矢量字体;0是指设备字体系统;1是指TrueType字体系统。默认:-1 ◆TICKLEN=value:用于设置绘制轴注释和标注中小刻度的尺度。 例如:绘制0~2π的正弦曲线,并给绘制的图形添加一个内容为My Sin(x)的标题和一个内容为Happy You的副标题。 x = FINDGEN(101)*(0.01*2.0*!PI) PLOT,x,SIN(x),TITLE='My Sin(x)',SUBTITLE='Happy You',TICKLEN = -0.02 ◆{X | Y | Z}GRIDSTYLE=integer{0 to 5}:设置X、Y和Z上刻度的栅格的类型。其取之范围和线型与LINESTYLE相同。 ◆{X | Y | Z}MINOR=integer:设置X轴、Y轴和Z轴上最小刻度间隔的数目。 ◆{X | Y | Z}RANGE=[min, max]:设置X轴、Y轴和Z轴的最小和最大范围。 例如:按指定的范围绘制正弦曲线。可以使用如下命令。 IDL> x = FINDGEN(200)*0.1 & PLOT, x, SIN(x), XRANGE=[0, 10.5]
TICKLEN = -0.2 TICKLEN = -0.02 TICKLEN = 0.02
●格式:PLOT, [X,] Y [, 关键字] ◆{X | Y | Z}STYLE=value:设置X轴、Y轴和Z轴的类型。 1 由{X | Y | Z}RANGE指定轴的精确范围 2 在轴范围的每一边留有空余 4 不显示整个坐标轴 8 只在左边或下边显示坐标轴 16 不把Y轴的起始值强行规定为0。 技巧:{X | Y | Z}STYLE设定的值可以以加的形式出现,来实现多重功能。如:YSTYLE=2+8。 例如:按指定的范围绘制正弦曲线。可以使用如下命令。 IDL>x = FINDGEN(200)*0.1 IDL>PLOT, x, SIN(x), XRANGE=[0,13.5], XSTYLE=1, YRANGE=[-2.5, 2.5], YSTYLE=1 IDL>PLOT, x,SIN(x),XSTYLE=8, YRANGE=[-2, 2], YSTYLE=1+8 ◆{X | Y | Z}THICK=value:设置X、Y和Z轴和刻度的粗细。其默认值为:1。 例如:按指定的字体和粗细绘制正弦曲线。可以使用如下命令。 IDL> x = FINDGEN(200)*0.1 IDL> PLOT, x, SIN(x), TITLE='SIN(X)', SUBTITLE='IDL PLOT' $ , CHARSIZE=1.25, FONT=1, LINESTYLE=3, THICK=2.0, PSYM=-1
●格式:PLOT, [X,] Y [, 关键字] 功能:在当前窗口中,按照指定的格式绘制直线或者曲线。 ◆{X | Y | Z}TICKFORMAT=string:给出X轴、Y轴和Z轴上刻度标注的格式代码,从而设定刻度标注的具体格式。 例如:绘制X轴和Y轴的标注格式分别为F6.2和F7.2。 IDL> x = FINDGEN(200)*0.1 图1.9 IDL> PLOT, x, SIN(x), XTICKFORMAT='(F6.2)', YTICKFORMAT='("$", F7.2)'
XTICKFORMAT='(F6.2)', YTICKFORMAT='("$", F7.2)' XTICKFORMAT='(F6.4)', YTICKFORMAT='("$", F7.4)' XTICKFORMAT='(F6.3)', YTICKFORMAT='("$", F7.3)'
●格式:PLOT, [X,] Y [, 关键字] ◆{X | Y | Z}TICKINTERVAL= value:同{X | Y | Z}TICKS,但是其优先级高于{X | Y | Z}TICKS。 ◆{X | Y | Z}TICKLEN=value:设置X轴、Y轴和Z轴的刻度的长度。默认值为0.02。 ◆{X | Y | Z}TICKNAME=string_array:设置X轴、Y轴和Z轴的刻度的标注。 ◆{X | Y | Z}TICKS=integer:设置X轴、Y轴和Z轴的主刻度的个数。 ◆{X | Y | Z}TICKV=array:设置X轴、Y轴和Z轴的刻度的值。 ◆{X | Y | Z}TITLE=string:设置X轴、Y轴和Z轴的标题。
设置X轴的主刻度的个数 ●格式:PLOT, [X,] Y [, 关键字] 例如:按指定的坐标格式绘制一条曲线。可以使用如下命令。 IDL> x = FINDGEN(11) IDL> PLOT, x+5, XTICKS=6, XTICKV=[1,2,6,7,10,12], YTICKS=6, $ YTICKV=[1,2,4,6,8,10], YTICKNAME=['A', 'B', 'C', 'D', 'E', 'F'] 设置X轴的刻度的值 设置Y轴的刻度的标注
2. 绘制多条线OPLOT ●格式:OPLOT, [X,] Y [, 关键字] 功能:在当前窗口中,按指定格式在同一个坐标系中绘制多个直线或者曲线 ◆OPLOT的使用方法与PLOT的用法基本相同,其不同之处是OPLOT可以在同一个坐标系中绘制多个直线或者曲线。 注意:在绘图时,X、Y被转换为双精度浮点型数据。 例如:在同一坐标系绘制0~2π的正弦曲线、余弦曲线和二者的乘积。 IDL> x = FINDGEN(101)*(0.01*2.0*!PI) IDL> PLOT, x, SIN(x) & OPLOT, x, COS(x) IDL> OPLOT, x, SIN(x) * COS(x)
3.绘制文本XYOUTS ●格式:XYOUTS, [X, Y,] String [, COLOR=value] [, FONT=integer] 功能:在当前窗口中,按照指定的位置输出文本内容的值。 如果当前窗口不存在,则系统按照默认设置创建一个默认窗口。 ●格式:XYOUTS, [X, Y,] String ◆X:绘制文本信息的X轴向上的位置。当文本内容String为数组时,X可为数组 ◆Y:绘制文本信息的Y轴向上的位置。当文本内容String为数组时,Y可为数组 ◆String:给出绘制文本信息的内容。 ◆XYOUTS的使用方法与PLOT的用法基本相同,其不同之处是XYOUTS可以在同一个窗口中,绘制任意的文本信息。 ◆连续使用XYOUTS时,绘制内容会在同一个窗口输出,并不擦除原有的内容 注意:在绘图时,X、Y、Z被转换为双精度浮点型数据。 例如:如下命令,在当前窗口的指定位置输出指定的文本信息。 XYOUTS, 100, 100, 'This is text' XYOUTS, [0, 200, 250],[200, 50, 100],['This', 'is', 'text'] 坐标位置
4.绘制带误差棒的数据图形 IDL中有几个内建的过程可以画误差棒,但它们缺乏一些重要的选择性。《IDL可视化入门与提高》提供了一个关于绘制误差棒数据图形的过程函数,格式如下: err_plot,x,y-err,y+err,关键字 其中,err_plot可以接受plots的关键字。 例如: x=findgen(10) y=randomu(-1L,10)+10 plot,x,y,yrange=[9.5,11.5] err=0.1 err_plot,x,y-err,y+err
5.在PostScript设备上显示图像 PRO OutToPostScript entry_device=!d.name set_plot,’PS’ device,filename=‘D:/file.ps’ x=indgen(10) y=x plot,x,y,/normal device,/close_file set_plot, entry_device END