Grafy i LaTeX
Posted on kwiecień 21st, 2007 in latex, studia, tutorial |
Ostatnio stanąłem przed koniecznością narysowania grafu i wstawienia go do dokumentu LaTeXa. Ze względu na mój antytalent do rysowania, odpuściłem sobie zewnętrzne programy typu Corel Draw czy OpenOffice Picture. Rozwiązanie, które wybrałem, ma też jedną ogromną zaletę. Mój dokument kompiluje się bez problemów do DVI, PS i PDF.

To brzydkie "malowidło" obok, zostało wykonane najbardziej prymitywnym narzędziem: ręką i długopisem. Ten sposób tworzenia obrazków ma niewątpliwie swoje zalety, jednak nie nadaje się do oficjalnych dokumentów. Wykonam go więc tak, żeby wyglądał profesjonalnie.
Narzędzia
Sam LaTeX pozwala na tworzenie prostych kształtów, typu okrąg, linia, prostokąt, itp. Jednak ja do tego celu użyję pakietu PGF/TikZ. Aby zainstalować pakiet, w Ubuntu Linux wystarczy wykonać poniższą komendę.
-
sudo apt-get install pgf
Pod Windowsem, w MikTeXu też nie powinno być problemów. Najprawdopodobniej paczka PGF zostanie automagicznie zainstalowana, przy pierwszej próbie użycia pakietu.
Tworzymy drzewko
Aby móc rysować za pomocą TikZa, w nagłówku dokumentu musimy dopisać:
-
\usepackage{tikz}
Sam kod należy umiescić w środowisku tikzpicture.
-
\begin{tikzpicture}
-
...
-
\end{tikzpicture}
Na początek stwórzmy punkty. Polecenie \filldraw rysuje zamalowaną figurę. W tym wypadku są to koła o wielkości 5pt. Liczby w nawiasach to współrzędne punktów w układzie współrzędnych.
-
\begin{tikzpicture}
-
\filldraw (0,4) circle (5pt)
-
(-2,2) circle (5pt)
-
(-3,0) circle (5pt)
-
(-1,0) circle (5pt)
-
(2,2) circle (5pt)
-
(1,0) circle (5pt)
-
(3,0) circle (5pt);
-
\end{tikzpicture}

Dodajmy do tego kilka krawędzi. Poleceniem \draw możemy narysować linie.
-
\begin{tikzpicture}
-
...
-
\draw (0,4) -- (-2,2);
-
\draw (-2,2) -- (-3,0);
-
\draw (-2,2) -- (-1,0);
-
\draw (0,4) -- (2,2);
-
\draw (2,2) -- (3,0);
-
\draw (2,2) -- (1,0);
-
\draw (-3,0) -- (-3.5,-1);
-
\draw (-3,0) -- (-2.5,-1);
-
\draw (-1,0) -- (-1.5,-1);
-
\draw (-1,0) -- (-0.5,-1);
-
\draw (3,0) -- (3.5,-1);
-
\draw (3,0) -- (2.5,-1);
-
\draw (1,0) -- (1.5,-1);
-
\draw (1,0) -- (0.5,-1);
-
\end{tikzpicture}

Już mamy prawie cały graf. Zostały jeszcze podpisy i dwie elipsy.
-
\begin{tikzpicture}
-
\filldraw (0,4) circle (5pt) node[above=5pt] {$y$}
-
(-2,2) circle (5pt)
-
(-3,0) circle (5pt)
-
(-1,0) circle (5pt)
-
(2,2) circle (5pt)
-
(1,0) circle (5pt)
-
(3,0) circle (5pt);
-
-
\draw (-2,0.25) ellipse (53pt and 80pt) node[above=75pt,left=25pt] {$S_1$};
-
\draw ( 2,0.25) ellipse (53pt and 80pt) node[above=75pt,right=25pt] {$S_2$};
-
...
-
\end{tikzpicture}

I to tyle.
Jeżeli okaże się, że obrazek okaże się zbyt duży, możemy go skalować. Wystarczy otworzyć środowisko tikzpicture z odpowiednią opcją. Poniższy kod zmniejszy obrazek do 70% wielkości.
-
\begin{tikzpicture}[scale=0.7]
-
...
Skalowanie niestety ma swoje wady. Musimy się liczyć z tym, że tekst się rozjedzie. Najczęściej będziemy musieli na nowo ustalić położenie napisów.
Zakończenie
Pakiet PGF/TikZ ma o wiele większe możliwości, niż rysowanie prostych grafów. Na http://www.fauskes.net/ można obejrzeć przykłady świetnych prac.
Do tworzenia nowych swoich rysunków przyda się także manual.
4 Responses
Powyższe drzewko, to tylko kawałeczek możliwości TikZa w rysowaniu grafów.
Jeżeli byłoby zainteresowanie na inny tutorial to proszę śmiało mówić. No, nie wstydzić się, bo więcej nie będzie.
Warto by było wspomnieć o ręcznej instalacji na innych systemach Unixowych. A dokładniej, że po ściągnięciu spakowanego pakietu z jego strony na sourceforge, rozpakowujemy go do /usr/local/share/texmf/tex/ ( nie zaś do /usr/share/texmf/tex/ ) a następnie wykonujemy polecenie texhash. Rozpakowanie w /usr/share/texmf/tex/ powoduje problemy (próba użycia pakietu wyrzuca błędy) i długo szukałem tego prostego rozwiązania
Jeśli chodzi o pomysł na tutorial to może jakieś kolorki i inne bajery?
Może jakiś bardziej skomplikowany graf? nie tylko z liniami prostymi ale i łukami? Sam dopiero dziś zacznę się tym bawić więc w sumie nie wiem jakie są większe możliwości tego pakietu…
Co do możliwości, to wszystko jest w świetnie napisanej instrukcji do pakietu.
Dzięki za info o instalacji w innych linuksach/uniksach.
Te grafy nie są jakoś bardzo powalające, ale co kto lubi