pgfplots внешнее форматирование файлов

pgfplots внешнее форматирование файлов

Кто-нибудь из вас знает стандартное форматирование для 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>текст, написанный в первой строке, so xи 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}

вывод кода выше

Связанный контент