22 结果的图形输出
RP Fiber Power具有大量的特性,可以产生图形输出。本文档并没有解释所有特性,但在线帮助系统提供了更多详细信息。在下面的例子中,我们考虑了一个显示光功率分布和沿光纤的上态粒子数的图,假设已经定义了掺镱放大器的参数:
diagram 1:
"Powers along the Fiber"
x: 0, L_f
"position (m)", @x
y: 0, 2
"power (W)", @y
y2: 0, 100
frame
f: P(pump, x),
color=lightred, width = 3, "pump"
f: P(signal_fw, x),
color=lightblue, width = 3, "signal,forward"
f: P(signal_bw, x),
color=magenta, width = 3, "signal,backward"
f: 100 * n(x), yscale = 2, style = dotted,"excitation"
一些评论:
1. 脚本文件可以通过使用“diagram 1:”之类的命令对每个图形定义集进行标题来定义多个图表。(如果图号被省略或替换为“?“,将选择下一个可用的图表编号。)
其他选项可以用逗号附加。使用position = (100, 100),可以确定屏幕上图表窗口的水平和垂直位置(从左上角开始的距离,单位为屏幕大小的1/1000)。同样,对于size = (500, 300),可以确定图形区域相对于屏幕尺寸的水平和垂直大小。使用size_px = (500, 300),可以以像素为单位确定尺寸。用for j := 1 to 3(例如)可以生成图表的多个版本。用transparent可以生成透明的图形,这仅在之后将图形保存到PNG或GIF文件时才相关。
2.默认情况下,将显示所有定义的图表;如果不需要,可以使用类似于diagram shown: 1, 3的命令来定义应显示哪些图表。
在图号之后,可以在圆括号中插入一个条件,这样只有满足该条件时才会显示图。例子:
diagramshown: 2 (test2 > 0), 4 (test4 > 0)
也可以定义一个表达式,该表达式决定是否显示所有图表。例子:
diagramshown: (j: j <= 5) { show diagrams 1 to 5 }
3.没有进一步说明的第一个文本字符串被视为图表的标题。其他文本字符串将作为副标题(字体较小)。
4.命令x:和y:定义坐标轴的范围,frame将坐标系的常规类型从默认的两个轴设置更改为在图表周围有一种框架。坐标范围后定义的字符串具有选项@x和@y,指示这些字符串应沿坐标轴放置。
5. y2:命令定义第二个y轴。仅当同时使用frame命令时才显示。最后一个图形中的选项yscale=2选择第二个y轴进行垂直缩放。
同样,可以使用x2:获得第二个x轴,并且使用选项xscale=2,可以根据该轴水平缩放图形。
6. 命令f:定义函数图。它基本上只需要一个参数:依赖于水平坐标x的数学表达式,其结果定义垂直位置。使用逗号,可以附加更多选项。上面演示的选项:color定义图形的颜色(其中一些预定义值为black、blue、green、cyan、red、magenta、brown、 lightgray、darkgray、lightblue、lightgreen、lightcyan、lightred、lightmagenta、yellow、orange、violet、white),width线条宽度(按图表大小缩放;您可能需要至少3个值查看效果),style线条样式(solid、dashed、fdashed、dotted、dotdashed),文本字符串作为标签显示在图表中。还可以使用选项step=50,使表达式仅每50个像素计算一次(以节省时间)。
命令f:还支持选项init expr,其中expr代表一个数学表达式,该表达式在绘制图形之前进行计算。类似地,finish expr将在绘制图形后计算表达式。例子:
f: P(signal_fw, x), init set_P_in(signal_fw,0.1e-3)
f: P(signal_fw, x), init set_P_in(signal_fw,0.2e-3)
此外,还可以使用循环来绘制多个图形:
f: P(signal_fw, x),
init set_P_in(signal_fw, P_s_in),
["P_s_in = ",P_s_in:d3:"W"],
color = color_I(P_s_in / (10 mW)),
for P_s_in := 1 mW to 10 mW step 1 mW
在后一个示例中,还可以获得与不同曲线对应的图例说明和颜色。
7. 请注意,在读取脚本时,图形不是立即准备好的,而是整个脚本成功读取后(即,没有遇到语法错误)。
8. 当在绘制图表时必须更改某些设置(例如,为了沿水平轴改变泵浦功率),使用复合表达式表示垂直坐标。例如,
f: (set_P_in(pump, x); P_out(signal_fw))
有一个表达式,首先根据水平位置设置泵浦功率,然后计算并返回信号输出功率。这种复合表达式可以有任意数量的子表达式,用分号分隔,并包含在括号中或在begin和end中。因此人们也可以写
f: begin
set_P_in(pump, x);
P_out(signal_fw);
end
9. 有时人们不喜欢画一个完整的图,只喜欢在图中显示一些点。例如:
! for x := 3 to 4 step 0.1 do
point(x + I * P(signal, x), "o")
将在几个位置显示空心圆圈,指定为实数部分(水平坐标)x和一些功率作为虚数部分的复数。其他可能的标记包括实心圆圈("O")、矩形("r")、三角形("t")、倒三角形("n")、菱形("h")、交叉("x")、星形("*")、单像素点("p")或较粗点("P")。
10. k命令生成参数化曲线:定义一个参数在一定范围内运行,用相应的表达式计算x和y坐标。例子:
k: t := 0 to 2 pi step pi / 100,
4 * cos(t), 2 * sin(5 * t),
color = blue, width = 3, marker ="x"
11. cp命令允许用户生成颜色图,其中坐标系中的每个点都获得从x和y坐标计算出的颜色。用户必须指定一个从x和y计算RGB颜色值的数学表达式。例如,
colorscale(r) :=
if r >= 0
then red
else blue
cp: colorscale(sin(x) * cos(y))
首先定义一个将实值转换为颜色的函数,cp命令使用它来指示该函数参数是正的还是负的。可以使用更复杂的函数,如rgb()函数,来定义连续的颜色标尺。还有用于强度和复振幅颜色标尺的color_I(r)和color_A(z%)函数。在线帮助提供了更多详细信息。