在统计编程语言中R
,有两种不同的形式来表示数据。宽形式如下所示:
subject time age weight height
1 John Smith 1 33 90 1.87
2 Mary Smith 1 NA 55 1.54
这长表如下所示:
subject variable value
1 John Smith time 1.00
2 Mary Smith time 1.00
3 John Smith age 33.00
4 Mary Smith age NA
5 John Smith weight 90.00
6 Mary Smith weight 55.00
7 John Smith height 1.87
8 Mary Smith height 1.54
例子来源:Hadley Wickham 的纸。但请注意,我将 Mary 的体重改为 55,之前为 NA。
是否可以读取长格式的文本文件并绘制身高与体重的关系图?
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
% the following code doesn't work, but communicates the idea
% of what I want to work
\addplot [x variable=height,y variable=weight] {input.txt};
\end{axis}
\end{tikzpicture}
\end{document}
我之所以问这个问题是因为我想绘制我编写的计算机模拟程序的输出,而长格式输出比宽格式输出更容易。目前,我使用脚本R
读取convert.R
长in.txt
格式的文本文件并将其转换为宽格式的文本文件out.txt
,这pgf图in.txt
可以读取。如果 pgfplots 能够以某种方式直接读取和处理而不需要我手动运行,那就更方便了convert.R
。
答案1
[根据我的评论转换而来]:
pgfplotstable
不支持“长格式”。如果您想要一些独立于 R 的转换脚本,您可以考虑编写 TeX 脚本(基于pgfplotstable
基本 TeX 编程)或 LUA 脚本。或者您可以R
通过 shell escape 或通过以下方式调用脚本\addplot shell