LaTeX에서 유리함수를 플롯하고 싶습니다. 나는 Tikz
또는 pgfplots
... 아무것도 작동하지 않는 다른 방법을 시도했습니다. 다양한 방법이 있습니다. 종종 극점/점근선 등에 문제가 있습니다.
\frac{1}{x^2 - 7x - 30}
\usetikzlibrary{datavisualization.formats.functions}
나는 쉬운 플롯 방법을 찾고 있지만 유용한 그래픽 옵션을 많이 제공하는 디자인도 마음에 듭니다 .
감사합니다
--
내 코드 중 일부:
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{tikz,pgfplots}
\usetikzlibrary{datavisualization.formats.functions}
\begin{document}
\begin{tikzpicture}[yscale=.5, xscale=.5, scale=2]
\datavisualization
[school book axes,
legend={below,rows=1},
visualize as smooth line/.list={f1},
f1={style=blue, style=very thick,label in legend={text=$\frac{1}{x-1}$}},
%f2={style=green, style=very thick,label in legend={text=$\frac{1}{x^2 - 7x - 30}$}}
]
data [set=f1, format=function] {
var x : interval[-4:0.5];
func y = 1/(\value{x} - 1);
}data [set=f1, format=function] {
var x : interval[1.5:4];
func y = 1/(\value x - 1);
};
data [set=f2, format=function] {
var x : interval[12:20];
func y = 1/(\value{x}^2 - 7 \value{x} - 30);
};
\end{tikzpicture}
\end{document}
이로 인해
다음 단계는 다음과 같습니다.
\begin{tikzpicture}[scale=1.5]
\begin{axis}[axis lines=middle,xmin=-20,xmax=20,ymin=-1.5,ymax=1.5,
extra x ticks={-2,2},
xlabel=$\scriptstyle x$,
ylabel=$\scriptstyle y$,
tick label style={font=\tiny},
legend style={font=\small,legend pos=outer north east,}]
\addplot+[no marks,blue,domain=-15:0.8,samples=150, thick] {1/(x - 1)};
\addplot+[no marks,blue,domain=1.2:15,samples=150, thick] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,red,domain=-15:-3.02,samples=150, thick] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,red,domain=-2.98:9.98,samples=150, thick] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,red,domain=10.02:15,samples=150, thick] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
xmin/xmax 축 간격 사이에 숫자를 더 추가하려면 어떻게 해야 합니까? 예를 들어 정수 2개마다 쓰나요?
답변1
와 함께pgfplots
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xmin=-7,xmax=17,ymin=-1.5,ymax=1.5,xlabel=$\scriptstyle x$,ylabel=$\scriptstyle y$,tick label style={font=\tiny},legend style={font=\tiny,legend pos=outer north east,}]
\addplot+[no marks,domain=-10:0.5,samples=150] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,olive,domain=-7:-3.02,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,olive,domain=-2.98:9.98,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,olive,domain=10.02:15,samples=150] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
\end{document}
를 사용하면 restrict y to domain=-10:10,
다음을 얻을 수 있습니다.
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xmin=-7,xmax=17,ymin=-1.5,ymax=1.5,xlabel=$\scriptstyle x$,ylabel=$\scriptstyle y$,tick label style={font=\tiny},legend style={font=\tiny,legend pos=outer north east,},restrict y to domain=-10:10,]
\addplot+[no marks,domain=-10:0.5,samples=150] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,olive,domain=-7:15,samples=150] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
\end{document}
unbounded coords=jump,
중요한 상황의 경우 바로 뒤에 가 필요할 수도 있습니다 restrict y to domain=-10:10,
.
편집을 위해 다음을 수행할 수 있습니다.
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,
xmin=-8,xmax=18,
ymin=-1.6,ymax=1.6,
xtick={-6,-4,...,16},
ytick={-1.4,-1.2,...,1.4},
xlabel=$\scriptstyle x$,
ylabel=$\scriptstyle y$,
tick label style={font=\tiny},
legend style={font=\tiny,legend pos=outer north east,}
]
\addplot+[no marks,line width=1pt,domain=-10:0.5,samples=150] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,line width=1pt,olive,domain=-7:-3.02,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,line width=1pt,olive,domain=-2.98:9.98,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,line width=1pt,olive,domain=10.02:15,samples=150] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
\end{document}
답변2
관심이 있으신 경우를 대비해 다음 방법으로도 쉽게 수행할 수 있습니다 pst-plot
.
\documentclass[12pt, svgnames,x11names, pdf]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{nccmath}
\usepackage{lmodern}
\usepackage{pst-plot}
\begin{document}
\def\F{1/(x^2-7*x-30)}
\def\G{1/(x-1)}
\footnotesize\everymath{\scriptstyle}
\psset{xunit=0.6, yunit=3, linewidth=0.6pt, ticksize=-2pt 2pt, labels=y, Dx=5, arrowinset=0.2}
\begin{pspicture*}(-7,-1.25)(15,1.6)
\psaxes[arrows=->](0,0)(-7,-1.25)(15,1.6)[ $ x $, -135][ $ y $,-135]%
\uput[-120](0,0){$ 0 $}% asymptotes
\psline(10,-1.25)(10,1.6)\uput[dr](10,0){$10$}
\psline(-3,-1.25)(-3,1.6)\uput[dl](-3,0){$-3$}
\psline(1,-1.25)(1,1.6)\uput[dr](1,0){$1$}
\psset{linewidth=1pt, linecolor =IndianRed ,plotpoints=100,plotstyle=curve, algebraic, labelsep = 0.5em}
\psplot{-7}{-3.02}{\F}
\psplot{-2.98}{9.98}{\F}
\psplot{10.02}{14.75}{\F}
\psset{linecolor=LightSkyBlue4!80!}
\psplot{-7}{0.98}{\G}
\psplot{14.75}{1.02}{\G}
\end{pspicture*}
\end{document}