segunda-feira, 3 de janeiro de 2011

Desenhando com TikZ

TikZ é um poderoso pacote de desenho dentro do LaTeX desenvolvido por Till Tantau. A linguagem do TikZ é similar a do Postscript (baixe este livro). Além de figuras com qualidade vetorial e precisão matemática, como retas, arcos, círculos, gráficos de funções; o TikZ também trabalha com curvas, esquemas (tipo organograma), etc.
Dois recursos exclusivos e muito úteis do TikZ é o (node) e posição absoluta. Veja no link.
Aqui veremos apenas o básico de TikZ. Mais informações no final do tópico.
Para inserir uma figura TikZ carregue o pacote TikZ seguido de um preâmbulo
mínimo.

\documentclass{article}
\usepackage{tikz}
\begin{document}
 \begin{tikzpicture}
  %escreva os códigos de desenho TikZ aqui.
 \end{tikzpicture}
\end{document}

Vamos ao primeiro exemplo com um simples segmento de reta.



\documentclass{article}
\usepackage{tikz}
\begin{document}
 \begin{tikzpicture}
  \draw (0,0) -- (2,1); %reta
 \end{tikzpicture}
\end{document}

Lembrando que todos os elementos do seu desenho devem estar entre \begin{tikzpicture} e \end{tikzpicture} vejamos o código mais simples para mais alguns elementos:

\begin{tikzpicture}
%círculo com centro na origem e raio unitário
 \draw[blue] (0,0) circle (1);
%também podemos usar unidades de medida
 \draw (0,0) circle (8mm);
%retângulo
 \draw (-1,-1) rectangle (2,1);
%arco
 \draw[->,red] (1.2,0) arc (0:60:1.2);
\end{tikzpicture}
%curvas
\begin{tikzpicture}
 \draw[line width=10pt] (0,0) .. controls (1,1) .. (4,0)
  .. controls (5,0) and (5,1) .. (4,1);
 \draw[color=gray] (0,0) -- (1,1) -- (4,0) -- (5,0) -- (5,1) -- (4,1);
\end{tikzpicture}



%gráfico de função
\begin{tikzpicture}
  \draw[->] (-3,0) -- (3,0);
  \draw[->] (0,-1) -- (0,4);
  \draw[blue,smooth,samples=100,domain=-2.0:2.0] plot(\x,{\x^2});
\end{tikzpicture}



%função seno
\begin{tikzpicture}
  \draw[->] (-3.14,0) -- (3.14,0);
  \draw[->] (0,-1.1) -- (0,1.1);
  \draw[blue,smooth,samples=100,domain=-3.14:3.14] plot(\x,{sin(\x r)});
\end{tikzpicture}


Repare em sin(\x r) o uso do 'r' para conversão em radianos; sem ele não teríamos a curva do seno como a conhecemos.

A vantagem do TikZ também é que podemos compilar via PDFLaTeX direto.

Veja exemplos de Tikz no site TeXample e leia PGF manual 2.10 e PGF/TikZ Graphics for LaTeX

11 comentários:

  1. Adorei o post, estou começando a aprender a usar Latex, e gostaria de saber porque não criou nada usando os comandos acima... precisa instalar mais algum complemento? qual? como?

    ResponderExcluir
  2. Ola, Parabens pelo Blog.

    Gostaria de saber se tem como plotar
    campos vetoriais a partir de uma função.

    Aguardo,

    ResponderExcluir
  3. Nodoc, veja se é isso que você quer http://www.texample.net/tikz/examples/seismic-focal-mechanism-in-3d-view/

    ResponderExcluir
  4. Olá Régis. Que surpresa boa esse blog!
    Régis, conheço o Tikz há pouco mais de uma semana e até agora
    não consegui gerar um gráfico.

    A partir dos seus exemplo, rodei tanto o latex quanto o pdflatex
    no editor vi do Fedora 16 e recebi a seguinte mensagem:

    ! Undefined control sequence.
    \tikz@plot@data ->\pgfplotfunction
    {\x }{-2.0,-1.95961,...,2.0}{\tikz@scan@o...
    l.9 ...amples=100,domain=-2.0:2.0] plot(\x,{\x^2})
    ;
    O código que tentei rodar foi esse abaixo:

    \documentclass{article}
    \usepackage{tikz}

    \begin{document}

    \begin{tikzpicture}
    \draw[->] (-3,0) -- (3,0);
    \draw[->] (0,-1) -- (0,4);
    \draw[blue,smooth,samples=100,domain=-2.0:2.0] plot(\x,{\x^2});
    \end{tikzpicture}

    \end{document}

    Faltou alguma coisa ?

    Agradeço se puder me ajudar,
    Wamberto.

    ResponderExcluir
    Respostas
    1. Desculpa pela demora mas não tinha visto seu comentário antes. Eu nunca usei Fedora, mas provavelmente o Tikz não está instalado na sua distribuição TeXLive, pesquise na net sobre atualização do TeXLive no Fedora e depois me diga se deu certo.

      Excluir
  5. Prezado Regis,

    por favor, porque no ambiente beamer o sistema de equações apresenta erros?

    \documentclass[10pt,xcolor=dvipsnames,slidestop, mathserif,final]{beamer}
    \usecolortheme[named=OliveGreen]{structure}
    \usepackage[brazil]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}

    \usepackage{wallpaper}
    \usepackage{graphicx}
    \usepackage{ae}
    \usepackage{alltt}
    \usepackage{pslatex}
    \usepackage{amsmath,mathtools,amssymb}
    \usepackage{mathrsfs}
    \usepackage{amsfonts}
    \usepackage{dsfont}
    \usepackage[brazil]{varioref}
    \usepackage{listings}
    \usepackage{url}
    \usepackage{colortbl}
    \usepackage{ifvtex}
    \usepackage{ifxetex}
    \usepackage{marvosym}
    \usepackage{pifont}
    \usepackage{epsfig} %for figures
    \usepackage[dvipsnames]{xcolor} %for color
    \setbeamertemplate{caption}[numbered]
    \usepackage[overload]{empheq}

    \newenvironment{eqnsystem}{\empheqset{left=\empheqlbrace}}{}

    \usetheme{Warsaw}
    \usepackage{beamerthemesplit}


    \begin{document}

    \frame

    {

    \begin{empheq}[left=\empheqlbrace]{align}
    2x + y - 3z & = -1 \nonumber \\
    -x + 3y + 2z & = 12 \nonumber \\
    3x + y -3z & = 0 \nonumber
    \end{empheq}

    }

    \end{document}

    Grato,

    Raimundo Nascimento

    ResponderExcluir
    Respostas
    1. Caro Raimundo, no meu não deu erro algum. Você pode especificar qual foi o erro? Que distribuição você usa? TeXLive? Que SO? Win ou Linux? Mencione o erro por favor.

      Excluir
  6. Olá,

    Tentei instalar esse pacote no meu Latex, mas pelos resultados não consegui. Quando eu tento rodar as seguintes linhas de código:

    \documentclass{article}
    \usepackage{tikz}
    \begin{document}
    \begin{tikzpicture}
    %escreva os códigos de desenho TikZ aqui.
    \end{tikzpicture}
    \end{document}

    ele me mostra como erro:

    latex> ! LaTex Error: File 'tikz.sty' not found.

    Eu baixei esse pacote utilizando o MikTex e eu uso o TeXnicCenter como editor de texto.

    Gostaria de saber qual foi o erro. Provavelmente deve ter sido algo relacionado com a instalação desse pacote. Como eu posso fazer para instalá-lo utilizando o MikTex?

    Obrigado.

    ResponderExcluir
  7. Olá, como faço para delimitar a imagem do gráfico da função?

    ResponderExcluir
    Respostas
    1. Jairo é o domínio da função que determina sua imagem, mas se você quiser "cortar" a imagem tente o comando \clip (0,0) rectangle (2,2); por exemplo.

      Excluir
  8. Muito obrigado. Acabei fazer meu primeiro grafico no latex.

    ResponderExcluir