前言

本文收集了一些笔者常用的(Xm)Grace使用的技巧.
以下操作均可以在qtgrace下实现.

数据集变换

Grace中支持多种数据处理, 从简单的求前后两点的差, 到复杂的函数变换和非线性拟合.

差分

XmGrace包含差分功能, 支持三种不同差分方式: 向前差分(Forward), 向后差分(Backword)或者居中差分(centered).

$$
\begin{aligned}
\text{forward} &: y’_{i, f} = \frac{y_{i+1}-y_i}{x_{i+1}-x_i}\\
\text{backward} &: y’_{i, b} = \frac{y_i-y_{i-1}}{x_i-x_{i-1}}\\
\text{centered} &: y’_{i, c} = \frac{y_{i+1}-y_{i-1}}{x_{i+1}-x_{i-1}}\\
\end{aligned}
$$

以函数$y=4(x-0.5)^2$为例, 其导数$y’=8x-4$.

  1. 选中差分功能: Data->Tranformation->Differences

    选中XmGrace的差分功能
    选中XmGrace的差分功能

  2. 选中一组数据, 确认差分方案

    差分功能界面, 向前差分
    差分功能界面, 向前差分

  3. Accept确认.

  4. 检查差分结果. 需要注意, 这里向前向后差分结果是相同的, 原因是向后差分的横坐标错了. 因此建议使用向前或居中差分.

    差分功能界面, 向前差分
    差分功能界面, 向前差分

表达式求值

Evaluate expression功能, 可以对数据进行自定义的函数变换. 它可以对单组数据的xy进行操作, 也可以在多组数据间操作, 非常方便. 该功能和Differences一样在Transformations标签里, 具体位置见第一张图.

表达式求值, 对数据作变换
表达式求值, 对数据作变换

  1. 选中想要操作的数据.
  2. 填写函数变换的表达式.
  3. 勾选Sync. selection, 使变换后的数据直接替换原有数据set. 如果不勾选, Destination下的数据栏中也没有选中任何set, 则变换后的数据会存在新的set中.
  4. 确认.

这里主要说一下第二条. 在写表达式时, y表示纵坐标, x表示横坐标. 一些常用的变换

1
2
3
4
5
6
7
8
9
10
# 向上平移0.5
y = y + 0.5
# 以第10个数据为零点进行平移
y = y - y[9]
# 求G0.S0和G1.S1之间的差
y = G0.S0.y - G1.S1.y
# 求自然对数
y = ln(y)
# 将横坐标转为角度
x = x * 180 / PI

更多的函数可以参考官网Xmgr: transformations

双y轴(Double y-axis)

参考这一链接, 制作包含两个不同y轴的图, 以在同一张图中展示用有相同横坐标, 但纵坐标范围不同的两组数据.

  1. 在窗口个中放置两张并排的图. Edit->Arrange graphs…
  2. 将cols改为2.
  3. 确认.

  4. 将右图盖到左图上. Edit->Overlay graphs…

  5. 选中G1为要覆盖的图.
  6. 选中G0为被覆盖上的图.
  7. 将Smart axis hint设置为”Same X axis scaling”.
  8. 确认. 这个时候两张图覆盖在了一起, 都窝在整个窗口的左侧.

  9. 调节图的范围. Plot->Graph appearance. 在Viewpoint设置G0的xmax, 例如1.15.

  10. 对G1作同样的操作.
  11. 确认.

  12. 为了分辨两个y轴, 用不同的颜色来区分. 双击右侧的y轴

  13. 确认在目前正在操作G1.
  14. 正常操作, 调节G1 y轴的属性.
  15. 确认.

有一点需要注意的是, 当调整y轴粗细比1大的时候, 可能会在某个y轴上看到黑线. 这是图的边框, 可以通过将Graph appearance中Frame标签下Frame box的透明度调到最低来消除.

Comments