
Кто-нибудь из вас знает стандартное форматирование для pgfplots
графиков, взятых из внешних файлов (а также допустимые типы файлов, например txt
, dat
), и что нужно указать, \addplot
чтобы данные были взяты именно из этого файла?
Спасибо за любую помощь.
решение1
Я думаю, поддерживаются только простые текстовые файлы, но расширение файла может быть любым, каким вам удобно:
.txt
,.dat
,.csv
,.montypython
, любое.Стандартный формат — это столбцы, разделенные пробелами, в том смысле, что ожидаемым разделителем столбцов по умолчанию является пробел («по крайней мере одна табуляция или пробел», если цитировать руководство). Однако вы можете указать другой разделитель с помощью ключа
col sep
, который может иметь следующие различные параметры:col sep=space|tab|comma|colon|semicolon|braces|&|ampersand
Итак, если у вас есть текстовый файл, выглядящий как
x y 1 1 2 3
тогда вы можете сделать
\addplot table {<filename including extension>};
и вы получите график зависимости y от x.
pgfplots
Если не указано иное, первый столбец будет использоваться для значений x, а второй — для значений y.Если у вас есть файл, разделенный запятыми, т.е.
x,y 1,1 2,3
тогда вам нужно сказать
\addplot table[col sep=comma] {<filename including extension>};
Если у вас больше двух столбцов, вы выбираете нужные столбцы для x и y с помощью
x=<column name>, y=<column name>
, илиx index=<number>, y index=<number>
. (Вы, конечно, можете использовать, например, имя дляx
, иindex
дляy
, если хотите.) Например,\addplot table[x=x, y=y] {<filename including extension>};
для первого примера файла, показанного выше, где заголовки столбцов на самом деле являются
x
иy
.Если первая строка содержит только числа, то
pgfplots
она не будет считываться как имена столбцов, предполагая, что файл не имеет строки заголовка.- Это
<column name>
текст, написанный в первой строке, sox
и y` для приведенных выше примеров. - Это
<number>
номер столбца, но обратите внимание, что отсчет начинается с нуля, поэтому, чтобы получить первый столбец,x
выполнитеx index=0
.
- Это
Пример кода, если это интересно:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{filecontents}
\begin{filecontents}{A.dat}
0 0
1 1
2 2
\end{filecontents}
\begin{filecontents}{B.csv}
0,1
1,2
2,3
\end{filecontents}
\begin{filecontents}{C.montypython}
foo bar baz
0 2 3
1 3 4
2 4 5
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table {A.dat};
\addplot table[col sep=comma] {B.csv};
\addplot table[x=foo, y=bar] {C.montypython};
\addplot table[x index=0, y index=2] {C.montypython};
\legend{A,B,C1,C2}
\end{axis}
\end{tikzpicture}
\end{document}