TikZ: построение файла данных с пропущенными значениями

У меня есть эти данные:

ценности

В data2 отсутствует третий пункт. Поэтому я подумал, что я бы определил два разных столбца x и назначил data2 x2.

Проблема: третий пункт data1 поднимается до 3 в скомпилированном графике. Если у меня разные и более значения, точки начинают уходить куда угодно, но не туда, где они принадлежат.

Вот код, который я использовал:

\addplot[only marks, mark = diamond, color = orange, mark size = 3pt]
 table[x=x1, y=data1]{example.dat};
\addlegendentry{data1};

\addplot[only marks, mark = square, color = gray, mark size = 3pt]
 table[x=x2, y=data2]{example.dat};
\addlegendentry{data2};

\addplot[only marks, mark = o, color = blue, mark size = 3pt]
 table[x=x1, y=data3]{example.dat};
\addlegendentry{data3};

И вот график, который я получаю:

график

Большое спасибо!

Btw. в реальных данных в одном наборе данных отсутствует значение a x/y в середине данных. Я надеюсь, что это не имеет значения по сравнению с моим примером.

1 ответ

Решение

pgfplots интерпретирует 2 вкладки как один разделитель. Таким образом, он видит файл данных как:

x1  x2  data1   data2   data3
0   0   1   2   3
1   1   1   2   3
2   1   3

Решение 1. Вы можете заменить пустые ячейки на NaN. pgfplots будет правильно интерпретировать это:

x1  x2  data1   data2   data3
0   0   1   2   3
1   1   1   2   3
2   nan 1   nan 3

Решение 2. Используйте разделитель другого типа (например, точки с запятой или запятые):

\begin{filecontents*}{example.csv}
x1;x2;data1;data2;data3
0;0;1;2;3
1;1;1;2;3
2;;1;;3
\end{filecontents*}
\pgfplotstableread[col sep = semicolon]{example.csv}\mydata

\begin{document}
...

Здесь я включил файл данных в файл TeX, но он также должен работать с отдельным файлом данных.


Другие вопросы по тегам