데이터를 플롯하기 위해 PGFplots 1.13과 함께 TexLive XuaLatex를 사용하고 있습니다. 다음과 같은 테이블이 있습니다.
x , y , z
0 , 0 , 0
0 , 0 , 1
1 , 1 , 0
1 , 1 , 1
2 , 2 , 0
2 , 4 , 1
3 , 3 , 0
3 , 9 , 1
4 , 4 , 0
4 , 16 , 1
5 , 5 , 0
5 , 25 , 1
6 , 6 , 0
6 , 36 , 1
PGFplot 축 환경을 사용하여 bar가 숫자일 때 z=bar인 x 위에 y를 플롯하려면 어떻게 해야 합니까? 나는 당신이 데이터에 접근할 수 있는 방법을 생각하고 있습니다.MySQL
\begin{tikzpicture}
\begin{axis}[/pgf/number format/.cd, use comma]
\addplot
table[x=x,y=y,WHERE z=0, col sep=comma]
{DATA.csv};
\addplot
table[x=x,y=y,WHERE z=1,col sep=comma]
{DATA.csv};
\end{axis}
\end{tikzpicture}
나는 가이드에서 그것에 관한 어떤 것도 찾지 못했습니다. 나는 다음과 같은 테이블을 가지고 질문을 생략하는 솔루션을 원하지 않습니다.
x, y1, y2
그런 다음 x=x, y=y1로 플롯하고 x=x, y=y2로 두 번째 플롯을 수행합니다.
이것은 내가 제공하는 간단한 예에 대한 편리한 솔루션일 수 있지만 내 문제에는 작동하지 않습니다. 실제 문제에는 4개의 다른 z에 대해 x 위에 10개의 다른 y가 표시되고 실제로는 원하지 않기 때문입니다. 여러 가지 이유로 제안된 솔루션과 같은 구현.
시간 내 주셔서 대단히 감사합니다
답변1
나는 이를 수행하는 데 여러 가지 방법이 있다고 생각합니다. 한 가지 방법은 y expr={ifthenelse(\thisrow{z}==0,\thisrow{y},nan}
.y=y
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usepackage{filecontents}
\begin{filecontents*}{DATA.csv}
x,y,z
0,0,0
0,0,1
1,1,0
1,1,1
2,2,0
2,4,1
3,3,0
3,9,1
4,4,0
4,16,1
5,5,0
5,25,1
6,6,0
6,36,1
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[/pgf/number format/.cd, use comma]
\addplot
table[x=x,y expr={ifthenelse(\thisrow{z}==0,\thisrow{y},nan)}, col sep=comma]
{DATA.csv};
\addplot
table[x=x,y expr={ifthenelse(\thisrow{z}==1,\thisrow{y},nan)},col sep=comma]
{DATA.csv};
\end{axis}
\end{tikzpicture}
\end{document}