我有一个progress.txt
格式的日志文件
<epoch> <space> <number> <space> <rest...>
以下是一个示例摘录:
$ cat progress.txt
1375097557 40 523 3927 26884
1375162528 40 529 3939 26969
1375170979 44 630 4761 32536
1375171815 44 637 4822 32965
....
我想用 LaTeX 渲染折线图和x 轴从列-1和y 轴从列-2。 这列-1位于自 1970 年以来格式,但这并不重要,因为我不需要任何x 轴-标签。
那么图表将如下所示:
| -----
| --
| ------
|-------
|
+-----------------------
如果足够简单,无需外部再处理,虽然这不是什么大问题,因为我无论如何都会用Makefile
。
扩展将会使用第 5 栏在次要 y 轴,然后都用不同的颜色或样式绘制,即
| °°----- :
| °°°°°°-- :
| °------ :
|-----°- :
|°°°°° :
+-----------------------+
我用
\usepackage{tikz}
无论如何,蒂克兹-解决方案是首选。
答案1
正如 Ignasi 所说,你可以使用 PGFPlots 来实现这一点:
\documentclass{article}
\usepackage{pgfplots}
\begin{filecontents}{progress.txt}
1375097557 40 523 3927 26884
1375162528 40 529 3939 26969
1375170979 44 630 4761 32536
1375171815 44 637 4822 32965
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{
scale only axis, % helps with aligning the two axes
x filter/.code={
\pgfmathparse{\pgfmathresult-1.375e9} % centering the data
}
}
\begin{axis}[ % First curve, left axis
axis y line*=left,
xtick=\empty
]
\addplot [black] table {progress.txt};
\end{axis}
\begin{axis}[ % Second curve, right axis
hide x axis,
axis y line*=right,
yticklabel style=red
]
\addplot [thick, red] table [y index=3] {progress.txt};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
和pgf图,这与蒂克兹axis
,您可以通过在单个图中放置两个环境来实现:
代码
\documentclass{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{document}
\begin{filecontents}{myfile.txt}
097557 40 523 3927 26884
122528 40 529 3939 28969
140979 42 630 4761 30536
171815 44 637 4822 32965
\end{filecontents}
\begin{tikzpicture}
\begin{axis}[xmajorticks=false,ytick pos=left]
\addplot[jump mark left,blue] table[x index=0, y index=1] {myfile.txt};
\end{axis}
\begin{axis}
[ xmajorticks=false,
ytick pos=right,
y tick label style={/pgf/number format/.cd, fixed, /tikz/.cd},
scaled y ticks = false,
ymin=25000,
ymax=33000,
]
\addplot[jump mark left,red] table[x index=0, y index=4] {myfile.txt};
\end{axis}
\end{tikzpicture}
\end{document}