正如我在标题中所说,我在导入数据方面遇到了困难。我获得的实验数据位于 .txt 文件中,其结构如下:
xxxxxxxxxxx
yyyyyyyyyyy
zzzzzzzzzzz
N a b c
1 3 4 5
2 6 7 8
3 9 8 7
4 6 5 4
xxxxxxxxxxx
yyyyyyyyyyy
zzzzzzzzzzz
x、y 和 z 是图中未使用的文本,所以我想跳过文件顶部和底部的行 - 只有表格才是重要的。现在我必须手动删除这些行才能使用下面的代码
\documentclass[paper=a4,ngerman,xcolor=dvipsnames]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[]{pgfplots}
\usepackage[]{tikz}
\pgfplotsset{compat=1.9}
\pgfplotsset{every axis label/.append style={font=\large}}
\pgfplotsset{every tick label/.append style={font=\large}}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[]
\addplot table [y=c,x=b]{mydata.txt};
\end{axis}
\end{tikzpicture}
\end{document}
我还想知道:我可以进行一个简单的计算吗?因为我想绘制行的负值“b“来自 mydata.txt”
例如这样:
....
\addplot table [y=c,x=g]{mydata.txt};
其中 g=b*(-1)
....
答案1
正如 Torbjørn T. 所提到的他的评论您可以使用x expr
并对y expr
表值进行一些数学运算。
他还提到了一种忽略起始行的方法,即skip first n
。另一种方法是将注释字符分配给行前实际的表格开始,这也适用于行后桌子。但我不知道有什么键可以忽略非表格線。
\begin{filecontents}{testOne.txt}
I am a header line
without a comment character
a b
1 2
2 3
\end{filecontents}
\begin{filecontents}{testTwo.txt}
% I am a header line
% with a comment character
%
a b
2 4
3 5
\end{filecontents}
\begin{filecontents}{testThree.txt}
a b
3 6
4 7
%
% I am a bottom line
% with a comment character
\end{filecontents}
\begin{filecontents}{testFour.txt}
a b
3 6
4 7
I am a bottom line
without a comment character
\end{filecontents}
\documentclass[border=2pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
% these three work fine
\addplot table [skip first n=3] {testOne.txt};
\addplot table [x=a,y expr=-\thisrow{b}] {testTwo.txt};
\addplot table {testThree.txt};
% % this will lead to an error, because PGFPlots first tries to read
% % the table before skipping the given indices
% \addplot table [skip coords between index={2}{4}] {testFour.txt};
\end{axis}
\end{tikzpicture}
\end{document}