Org Plot 可以根据 Org 表格中存储的信息生成图表, 既可以是图形化图表,也可以是 ASCII 艺术图表。
Org Plot 可以借助 Gnuplot 与 Gnuplot mode, 将 Org 表格中的数据生成二维与三维图表。 想要实际体验该功能,请先确保系统已安装 Gnuplot 与 Gnuplot mode, 随后将光标置于下方表格处,执行 C-c " g 或 M-x org-plot/gnuplot。
#+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]" | Sede | Max cites | H-index | |-----------+-----------+---------| | Chile | 257.72 | 21.39 | | Leeds | 165.77 | 19.68 | | Sao Paolo | 71.00 | 11.50 | | Stockholm | 134.19 | 14.33 | | Morelia | 257.56 | 17.67 |
Org Plot 支持多种图表类型,也支持自行扩展更多类型。 例如可以按如下方式生成雷达图:
#+PLOT: title:"An evaluation of plaintext document formats" transpose:yes type:radar min:0 max:4 | Format | Fine-grained-control | Initial Effort | Syntax simplicity | Editor Support | Integrations | Ease-of-referencing | Versatility | |-------------------+----------------------+----------------+-------------------+----------------+--------------+---------------------+-------------| | Word | 2 | 4 | 4 | 2 | 3 | 2 | 2 | | LaTeX | 4 | 1 | 1 | 3 | 2 | 4 | 3 | | Org Mode | 4 | 2 | 3.5 | 1 | 4 | 4 | 4 | | Markdown | 1 | 3 | 3 | 4 | 3 | 3 | 1 | | Markdown + Pandoc | 2.5 | 2.5 | 2.5 | 3 | 3 | 3 | 2 |
可以看到 Org Plot 能够自动将表格表头用作图表标签。 通过表格前方的 ‘PLOT’ 关键字,还可以进一步控制图表的标签、类型、内容与外观。 下方列出 Org Plot 的全部可用选项。 更多说明与示例可参考 Org Plot tutorial。
指定绘图时需要设置的任意 Gnuplot 选项。
指定图表标题。
指定表格中用作 ‘x’ 轴的列。
指定表格中用作 ‘x’ 轴时间值的列。
以 Lisp 风格列表形式指定需要绘制的列,使用圆括号包裹、空格分隔, 例如 ‘dep:(3 4)’ 表示绘制第三列与第四列。 默认绘制除 ‘ind’ 指定列之外的所有列。
取值为 ‘y’ 、 ‘yes’ 或 ‘t’ 时,会在绘图前尝试转置表格数据。 也支持简写 ‘trans’ 。
指定图表类型,默认为 ‘2d’ 、 ‘3d’ 、 ‘radar’ 或 ‘grid’ 之一。
可用类型可通过 org-plot/preset-plot-types 自定义。
为所有待绘制列指定 ‘with’ 选项,例如 ‘lines’ 、 ‘points’ 、 ‘boxes’ 、 ‘impulses’ 。 默认为 ‘lines’ 。
若需要将图表输出至文件,可指定为 ‘"path/to/desired/output-file"’ 。
为 ‘deps’ 指定的列设置标签列表。 若存在表头,默认使用列标题。
指定一整行内容,直接插入到 Gnuplot 脚本中。
绘制 ‘3d’ 或 ‘grid’ 类型图表时,将此项设为 ‘t’ 可绘制平面映射图,而非三维坡度图。
设置图表可使用的坐标轴最小值,默认指代 ‘y’ 轴。 可通过 ‘xmin’ 与 ‘ymin’ 分别显式指定 ‘x’ 轴与 ‘y’ 轴的最小值。
设置图表可使用的坐标轴最大值,默认指代 ‘y’ 轴。 可通过 ‘xmax’ 与 ‘ymax’ 分别显式指定 ‘x’ 轴与 ‘y’ 轴的最大值。
设置希望显示的坐标轴刻度数量,供对应图表类型使用。
若未指定,需要刻度的图表类型会通过 org--plot/sensible-tick-num 自动计算合适值。
指定 Org 时间戳的格式,以便 Gnuplot 解析。 默认为 ‘%Y-%m-%d-%H:%M:%S’ 。
若需要完全自主控制,可指定一个脚本文件(文件名用双引号包裹)用于绘图。 绘图前,脚本中所有 ‘$datafile’ 都会被替换为生成的数据文件路径。 注意:即使设置了该选项,通常仍建议指定图表类型,因为它会影响数据文件内容。
将光标置于某一列上,输入 C-c " a 或执行 M-x orgtbl-ascii-plot,即可新增一列并生成 ASCII 风格的柱状图。 该图表通过常规表格公式实现。当源列数据变化时, 可通过刷新表格更新柱状图,例如输入 C-u C-c *。
| Sede | Max cites | | |---------------+-----------+--------------| | Chile | 257.72 | WWWWWWWWWWWW | | Leeds | 165.77 | WWWWWWWh | | Sao Paolo | 71.00 | WWW; | | Stockholm | 134.19 | WWWWWW: | | Morelia | 257.56 | WWWWWWWWWWWH | | Rochefourchat | 0.00 | | #+TBLFM: $3='(orgtbl-ascii-draw $2 0.0 257.72 12)
该公式为 Elisp 调用。
在表格中绘制 ASCII 柱状条。
VALUE 为待绘制的数据值。
MIN 对应空柱所代表的数值,MAX 对应填满整个 WIDTH 柱宽的数值。 超出该范围的源数据会显示为 ‘too small’ 或 ‘too large’ 。
WIDTH 为柱状图所占字符数,默认为 ‘12’ 。