2018 оны 1 сарын 20

LaTeX дээр TikZ болон PGFPlots ашиглаж функцийн график оруулах

LaTeX дээр функцийн графикийг TikZ болон PGFPlots ашиглаж зургаар бус кодоор оруулахыг харуулсан хэдэн жишээ кодыг үр дүнгийн хамт оруулав.

LaTeX дээр аливаа график, схем, диаграм, зураг оруулахдаа \includegraphics{} байдлаар (зургийн JPEG цаашилбал PDF форматтай) файлаас дуудахын оронд LaTeX-ын зохих багц ашиглаж кодоор бичиж өгөх нь зүйтэй. Энэ нь дараах давуу талтай.

  1. Хэвлэлийн шаардлага бүрэн хангах өндөр чанартай үр дүн гарна. Тодруулбал хэвлэхэд бүрсийхгүй гэсэн үг юм.
  2. Эцсийн үр дүн (PDF файл) болон эх файлын (TEX файл) хэмжээ багасна.
  3. Бүх зүйл текст хэлбэртэй байх тул дараа нь засах өөрчлөхөд хялбар болно.
  4. Кодоор бичиж өгөх учир үсгийн фонт, фонтын хэмжээ зөрөхгүй.
  5. Бүх зүйлийг координатчлан заах учир өндөр нарийвчлалтай, үнэн зөв, бодит зураг гарна.
  6. TikZ зэргийг сайтар эзэмшсэн бол нарийн төвөгтэй зүйлийг ч төвөггүй зурж чадна.

Ингээд жишээ болгон хэдэн янзын функцийн графикийг нэмэлт тайлбар, огтлолцлын цэг болон бусад нэмэлт зүйлийн хамт "зурж" үзүүлэв.

Шугаман функцийн график

\documentclass[border=2pt]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[mongolian]{babel}
\usepackage{mathtools,tikz,pgfplots}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
 height=8cm,width=8cm,
 axis lines=middle,
 xlabel=$x$,ylabel=$y$,
 xmin=-2,xmax=7,ymin=-1,ymax=5,
 xtick={-2,2,4,6},ytick={-1,0.5,1,2,3,4},
 clip=false,
]
\draw[name path=Y,draw=none] (axis cs:0,0) -- (axis cs:0,5);
\addplot[name path=A,domain=-2:6,smooth,thick,blue] {1+x/2};
\draw[draw,name intersections={of=A and Y, by={a}}];

\draw[name path=B,thick,blue] (axis cs:-2,0.5) -- (axis cs:6,0.5);
\draw[draw=none,name intersections={of=B and Y, by={b}}];

\draw[fill=red] (a) circle (2pt);
\draw[fill=red] (b) circle (2pt);

\node[above,yshift=1mm,xshift=30mm] at (b) {\small $\dfrac{dy}{dx}=\dfrac{1}{2}$ ахиу орлого};
\node[above,yshift=22mm,xshift=15mm] at (a) {\small $y=1+\dfrac{x}{2}$};
\node[above,yshift=18mm,xshift=15mm] at (a) {\small нийт орлого};
\end{axis}
\end{tikzpicture}
\end{document}

Зэрэгт функцийн график

\documentclass[border=2pt]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[mongolian]{babel}
\usepackage{mathtools,tikz,pgfplots}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
 height=8cm,width=8cm,
 axis lines=middle,
 xlabel=$x$,ylabel=$y$,
 xmin=0,xmax=9,ymin=-15,ymax=60,
 xtick={2,4,6,8},ytick={-10,0,10,30,50},
 clip=false,
]
\addplot[name path=A,domain=0:8,smooth,thick,blue] {x^2/2 - 10};
\draw[name path=X,draw=none] (axis cs:0,0) -- (axis cs:8,0);
\draw[draw,name intersections={of=A and X, by={a}}];

\addplot[name path=B,domain=0:8,smooth,thick,blue] {x^3/6 - 10*x + 50};
\coordinate (p) at (axis cs:0,50);
\draw[name path=Y,draw=none] (a) -- (a |- p);
\draw[draw=none,name intersections={of=B and Y, by={b}}];

\draw[dashed] (a) -- (b);
\draw[dashed] (p |- b) -- (b);
\draw[fill=red] (a) circle (2pt);
\draw[fill=red] (b) circle (2pt);

\node[below,yshift=-5mm,xshift=5mm] at (a) {\small $\dfrac{dy}{dx}=\dfrac{x^2}{2}-10$ ахиу орлого};
\node[above,yshift=7mm] at (b) {\small $y=\dfrac{x^3}{6}-10x+50$};
\node[above,yshift=3mm] at (b) {\small нийт орлого};
\end{axis}
\end{tikzpicture}
\end{document}

Хэсэгчилсэн шугаман функцийн график

\documentclass[border=2pt]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[mongolian]{babel}
\usepackage{mathtools,tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
 height=8cm,width=8cm,
 axis lines=middle,
 axis equal,
 xlabel=$x$,ylabel=$y$,
 xmin=0,xmax=9,ymin=-1.25,ymax=6,
 xtick={3},ytick={-1,0,1,2,5},
 clip=false,
]
\addplot[domain=0:3,thick,blue] {5-x};
\addplot[domain=3:6,thick,blue] {x-1};

\addplot[domain=0:3,thick,blue] {-1};
\addplot[domain=3:8,thick,blue] {1};

\draw[dashed] (axis cs:3,-1) -- (axis cs:3,1);
\draw[fill=red] (axis cs:3,0) circle (2pt);
\draw[fill=red] (axis cs:3,2) circle (2pt);

\node[above,yshift=18mm] at (axis cs:3,2) {\small $y=\left\{\begin{array}{ll}
5-x & x\leq3 \\ x-1 & x>3
\end{array}\right.$};
\node[above,yshift=14mm] at (axis cs:3,2) {\small нийт орлого};
\node[above,yshift=12mm,xshift=25mm] at (axis cs:3,0) {\small $\dfrac{dy}{dx}=\left\{\begin{array}{rl}
-1 & x\leq3 \\ 1 & x>3
\end{array}\right.$};
\node[above,yshift=8mm,xshift=25mm] at (axis cs:3,0) {\small ахиу орлого};
\end{axis}
\end{tikzpicture}
\end{document}

Функцийн графикуудын огтлолцол

\documentclass[border=2pt]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[mongolian]{babel}
\usepackage{mathtools,tikz,pgfplots}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
 height=8cm,width=8cm,
 axis lines=middle,
 xlabel=$Q$,ylabel=$\$$,
 xmin=0,xmax=13,ymin=0,ymax=130,
 xtick={2,4,6,8,10},ytick={0,30,60,90,120},
 clip=false,
]
\addplot[name path=A,domain=0:10,smooth,thick,blue] {3*x^2 - 24*x + 60};
\addplot[name path=B,domain=0:10,smooth,thick,blue] {x^2 - 12*x + 60};
\draw[draw=none,name intersections={of=A and B}];

\coordinate (o) at (axis cs:0,0);
\draw[dashed] (intersection-2) -- (intersection-2 |- o);
\draw[fill=red] (intersection-1) circle (2pt);
\draw[fill=red] (intersection-2) circle (2pt);

\node[below,yshift=-1mm,xshift=17mm] (AC) at (intersection-2) {\small $AC=Q^2-12Q+60$};
\node[above,yshift=25mm,xshift=-5mm] (MC) at (intersection-2) {\small $MC=3Q^2-24Q+60$};

\draw[thin,<-] (axis cs:9,{9^2-12*9+60}) -- (AC);
\draw[thin,<-] (axis cs:8,{3*8^2-24*8+60}) -- (MC);
\end{axis}
\end{tikzpicture}
\end{document}

Хоёр хувьсагчийн функцийн график буюу гадаргуу

\documentclass[tikz,border=2pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
 height=8cm,width=8cm,
 axis on top,
 axis lines=center,
% y dir=reverse,
 enlargelimits=.1,
 ymin=0, ymax=2.5, xmin=0, xmax=2.5, zmin=0, zmax=2,
 xlabel={$L$}, ylabel={$K$}, zlabel={$Q$},
 ticks=none,
 clip=false,
]
 \addplot3[surf,shader=interp,domain=0:2] {exp(-((x-2)^2+(y-2)^2))};
 \draw[dashed] (axis cs:1,0,0) node[below] {$L_1$} -- (axis cs:1,2,0) -- (axis cs:1,2,{exp(-((1-2)^2+(2-2)^2))}) node[above] {$C$};
 \draw[dashed] (axis cs:1.5,0,0) node[below] {$L_2$} -- (axis cs:1.5,2,0) -- (axis cs:1.5,2,{exp(-((1.5-2)^2+(2-2)^2))}) node[above] {$D$};
 \draw[dashed] (axis cs:2,0,0) node[below] {$L_0$} -- (axis cs:2,2,0) -- (axis cs:2,2,{exp(-((2-2)^2+(2-2)^2))}) node[above] {$A$};
 \draw[dashed] (axis cs:0,2,0) node[left] {$K_0$} -- (axis cs:2,2,0) node[right] {$B$};
\end{axis}
\end{tikzpicture}
\end{document}