여러 줄의 코드를 사용하여 gnuplot을 사용하여 플롯하려고 합니다 \addplot gnuplot
. 그러나 이 방법은 작동하지 않으며 플롯 출력이 생성되지 않습니다. 코드가 포함된 파일을 호출하거나 함수 선언이 포함된 여러 줄을 포함하는 것이 가능합니까?
감사해요!
추신: 간단한 온라인 gnuplot이 작동합니다(예: 플롯 [-10:100] real(sin(x)**besj0(x)))도 shell-escape
활성화해야 합니다.
예:
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepackage{amsmath}
\usepackage[per=slash, decimalsymbol=comma, loctolang={DE:ngerman,UK:english},]{siunitx}
\begin{document}
\usepgfplotslibrary{units}
\begin{tikzpicture}
\begin{axis}[width=0.95\linewidth,
height=7.5cm,
legend pos=north east,
grid=major,
grid style={dashed,gray!30},
xlabel=Frequency in \si{\hertz},
ylabel=Impedance in \si{\ohm},
enlarge x limits=false,
xmode=log,
xmax=10^9 ]
\addplot gnuplot[raw gnuplot,mark=none,color=cyan] {
j=sqrt(-1)
zc(f,c) = 1/(j*2*pi*f*c)
zl(f,l) = j*2*pi*f*l
zpar(z1,z2) = z1*z2/(z1+z2)
zmodel(f,r,c) = zpar(r, zc(f,c))
azmodel(f) = abs(zmodel(f,R1,C1))
R1= 5.6e6
C1= 1e-9
plot azmodel(x)
};
% plot [-10:100] real(sin(x)**besj0(x))
\end{axis}
\end{tikzpicture}<>
\end{document}
답변1
;
각 gnuplot 줄 끝에 a를 추가해야 합니다 .
이유: pgfplots
파일을 작성한 yourfile.pgf-plot.gnuplot
다음 gnuplot에 공급합니다. 귀하의 코드는 한 줄로 작성되었습니다. 따라서 Gnuplot은 개별 할당을 구분할 수 없습니다. ;
줄 끝에서 이 문제를 해결할 수 있으며 gnuplot은 필요한 테이블( ) 을 생성합니다 yourfile.pgf-plot.table
.
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepackage{amsmath}
\usepackage[per=slash, decimalsymbol=comma, loctolang={DE:ngerman,UK:english},]{siunitx}
\begin{document}
\usepgfplotslibrary{units}
\begin{tikzpicture}
\begin{axis}[width=0.95\linewidth,
height=7.5cm,
legend pos=north east,
grid=major,
grid style={dashed,gray!30},
xlabel=Frequency in \si{\hertz},
ylabel=Impedance in \si{\ohm},
enlarge x limits=false,
xmode=log,
xmax=10^9 ]
\addplot gnuplot[raw gnuplot,mark=none,color=cyan] {
% add semicolons here
j=sqrt(-1);
zc(f,c) = 1/(j*2*pi*f*c);
zl(f,l) = j*2*pi*f*l;
zpar(z1,z2) = z1*z2/(z1+z2);
zmodel(f,r,c) = zpar(r, zc(f,c));
azmodel(f) = abs(zmodel(f,R1,C1));
R1= 5.6e6;
C1= 1e-9;
plot azmodel(x);
};
% plot [-10:100] real(sin(x)**besj0(x))
\end{axis}
\end{tikzpicture}<>
\end{document}
면책조항: 설치에 문제가 있어서 gnuplot을 수동으로 실행해야 했습니다. 하지만 세미콜론과 함께 작동했고, 세미콜론 없이는 작동하지 않았습니다.
편집: 명령줄에서 gnuplot을 실행하면 ^
오류가 발생한 위치를 가리키는 두 번째 줄의 내용이 표시됩니다.
user@mashine:~/path/to/file> gnuplot yourfile.pgf-plot.gnuplot
set format "%.7e";; j=sqrt(-1) zc(f,c) = 1/(j*2*pi*f*c) zl(f,l) = j*2*pi*f*l zpar(z1,z2) = z1*z2/(z1+z2) zmodel(f,r,c) = zpar(r, zc(f,c)) azmodel(f) = abs(zmodel(f,R1,C1)) R1= 5.6e6 C1= 1e-9 plot azmodel(x)
^
"yourfile.pgf-plot.gnuplot", line 2: ';' expected