RSS
 

…o TikZ, czyli rysowanie z LaTeX

30 lip

Jestem w trakcie pisania pracy magisterskiej i chociaż nie jestem pewien czy uda mi się ją złożyć w terminie to nie umiem się powstrzymać przed eksperymentowaniem. Ostatnio wykonałem parę schematów w Dia, w którym pracuję się naprawdę przyjemnie jednak ostateczny efekt mnie nie zadowalał. Ze względu na skalowanie linie były zbyt grube, a całość wyglądała topornie. Postanowiłem schematy poprawić… kiedyś :) Następny problem pojawił się przy rysowaniu wykresów w Octave, który korzysta z Gnuplota do rysowania. Polskich znaków brak. Udało mi się rozwiązać problem polskich znaków jednak wykres zapisany w pdf był na środku strony, kiedy nad i pod było sporo wolnego miejsca… dość tego pomyślałem i w ten sposób trafiłem na TikZ/PGF.

Na początku całość może wydawać się trochę przerażająca, a obszerna dokumentacja (>700stron) nie pomaga w zwalczeniu tego uczucia. W dokumentacji na szczęście zawartych jest kilka przykładów, a jeszcze więcej naprawdę pomocnych przykładów znajdziecie na stronie TeXample. Ale co to tak właściwie jest… jest to sposób rysowania przez „programowanie” zupełnie tak jak pisanie w systemach TeX, gdzie cały dokument „programujemy”. Jak to wygląda? Jedna z prostszych konfiguracji

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage{polski}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[x=0.023cm,y=0.05cm]%skalowanie
  % punkty ekstremalne
  \def\xmin{0}; \def\xmax{500};
  \def\ymin{-60}; \def\ymax{40};

  % osie
  \draw[->] (\xmin,\ymin) -- coordinate (x axis mid) (\xmax+10,\ymin);
  \draw[->] (\xmin,\ymin) -- coordinate (y axis mid) (\xmin,\ymax+5);

  % podpisy osi
  \node[below=0.7cm] at (x axis mid) {Częstotliwość [Hz]};
  \node[rotate=90, above left=0.7cm and 0.7cm] at (y axis mid) {Pxx [dB]};

  % wartości na osiach
  \foreach \x in {0,100,...,500} \node at (\x, \ymin) [below] {\x};
  \foreach \y in {-60,-40,...,40} \node at (\xmin,\y) [left] {\y};

  % siatka
  \draw[style=help lines, ystep=20, xstep=100] (\xmin,\ymin) grid
  (\xmax,\ymax);

  \draw[color=blue] plot file {allpassxn.txt} node[right] {$\lambda=0$};
  \draw[color=red] plot file {allpassxnporow1.txt} node[right] {$\lambda=0.1$};
\end{tikzpicture} 

\end{document}

To rysowanie prostego wykresu z danych zewnętrznych, które zapisałem w Octave: plik1 i plik2. Skompilowanie do pdf:

pdflatex nazwa.tex

W wyniku otrzymujemy dobrze wyglądający wykres, równie dobrze wyglądający jak tekst. Nie ma pustych miejsc, nie ma innego kroju pisma, nie ma problemu z polskimi znakami. Wygląda to po prostu tak jak powinno, chociaż trzeba włożyć w to trochę więcej pracy niż przy użyciu innych narzędzi.

Po informację o pozostałych funkcjach, których jest ogrom odsyłam do dokumentacji i na stronę z przykładami. Pakiet jest dostępny w repozytorium Ubuntu pod nazwą texlive-pictures. W innych dystrubucjach oczywiście trzeba poszukać samemu. Polecam

 
7 komentarzy

Opublikował w ubuntu

 

Tagi: , ,

Skomentuj

Connect with Facebook

 

 
  1. Rafał

    Lipiec 31, 2010 at 11:24

    Jeśli to może w czymś pomóc – podczas pisania magisterki używałem Origin’a (pakiet do wykresów pod win32 – niestety nie jest darmowy, ale uczelnie często mają), który pozwalał na eksport do eps (a to już „na żywo” w plik tex).

     
    • Łukasz Klich

      Lipiec 31, 2010 at 11:49

      Po pierwsze wkręciłem się już w korzystanie z tego i skrobnąłem z 7 schematów i pare wykresów tym. Po drugie, nie posiadam windowsa wogóle, ale dziękuje, może ktoś skorzysta

       
  2. Lan

    Wrzesień 12, 2010 at 16:08

    Swoją drogą, to można w łatwy sposób otrzymać wykresy z gnuplota z zachowaniem wszystkiego co potrzebujesz – ładny „profesjonalny LaTeX-owski” wygląd oczywiście z zachowaniem czcionek LaTeX’a/TeX’a.
    Uzyskuje się to przez zapis w terminalu epslatex, który częściowo korzysta z eps i tex – bierze z nich co robią najlepiej;) jeden z opisów jak uzyskać co potrzebujemy (nie koniecznie najlepszy):
    http://bohnsack.com/?p=841

    są także inne terminale. – może to co piszę jest mało fachowe, bo nie jestem znawczynią Linuxa, a jedynie okazjonalną użytkowniczką.

    /myślę, że Octave też to potrafi, choć nigdy nie miałam z nim doczynienia/

     
    • Łukasz Klich

      Wrzesień 13, 2010 at 00:03

      Dziękuje za link. Z pewnością ładne wykresy można tworzyć na różne sposoby, ale TikZ tak naprawdę wykorzystywałem więcej do robienia schematów, czego już w gnuplocie nie zrobię. Tak czy inaczej, dobrze, że go podałaś, bo teraz mając go na blogu już mi nie zginie i w przyszłości możliwe, że skorzystam :)

       
  3. Marek Bury

    Luty 11, 2011 at 13:27

    Również używam tikz do formatowania wykresów i prostych rysunków w LaTeX. Muszę jednak przyznać, że samo rysowanie krzywych na wykresie jest w tym pakiecie dość uciążliwe – LaTeX zwyczajnie służy do czego innego. W związku z tym, warto moim zdaniem wykorzystać zewnętrzny program i samemu tylko dorobić opis osi. Efekt jest niemal równie dobry, a realizacja nierównie prostsza. Przykładowo w Matlabie można skonfigurować eksport figur do pdf (wynikowy plik jest wektorowy), ustawiając rozmiary obrazka i czcionek (cyfry na osiach wstawia matlab). Wówczas w LaTeX’u można ustawić stałą komendę do umieszczania gotowych rysunków:
    \begin{figure}\centering
    \begin{tikzpicture}
    \node[inner sep=0,outer sep=0] (P) {\includegraphics[trim=4.5cm 10.85cm 4.5cm 10.85cm,clip]{./filename.pdf}};

    \draw (P.south) node (xlabel) {xlabel text};
    \draw (P.west) node[below,rotate=90] (ylabel) {ylabel text};
    \end{tikzpicture}
    \caption{\label{fig:etykieta}tytuł}
    \end{figure}
    Plik pdf można również wygenerować z octavy, ale niestety będzie brzydszy.
    Pozdrawiam,
    MB

     
    • Łukasz Klich

      Marzec 25, 2011 at 13:37

      Dzięki, na pewno wykorzystam.

      Sorry, że tak długo niezatwierdziłem komentarza, ale musiałem przeoczyć powiadomienie na mailu

       
  4. sfp

    Czerwiec 3, 2011 at 15:25

    Jeśli chodzi o wyprowadzanie wykresów z GnuPlot’a, to proponuję
    set terminal postscript eps enhanced color
    Produkuje pliki eps – jak znalazł do LaTeX’a.
    Jako bonus otrzymuje się oba indeksy (górny i dolny) oraz greckie litery.

     
 
Blog WebMastered by All in One Webmaster.

Switch to our mobile site