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


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
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 :)
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
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.