MAT 172 { Matem atica Computacional Introdu˘c~ao ao Ti Z 172/2016-II/slides/slidestikz - MAT... ·...
Transcript of MAT 172 { Matem atica Computacional Introdu˘c~ao ao Ti Z 172/2016-II/slides/slidestikz - MAT... ·...
MAT 172 – Matematica ComputacionalIntroducao ao TikZ
Lana Mara R. dos Santos
Departamento de MatematicaUniversidade Federal de Vicosa
2016/II
[email protected] MAT 172 - 2016/II 1 / 41
PGF/TikZ
PGF/TikZ e um linguagens para produzir imagens vetoriais, isto e,imagens descritas a partir da sua descricao geometrica ou algebrica.O PGF e uma linguagem de baixo nıvel enquanto TikZ e um conjuntode macros de alto nıvel que usa o PGF.
Uma imagem vetorial normalmente e composta por pontos, curvas,polıgonos, texto, entre outros elementos, isto e, utilizam vetoresmatematicos para sua descricao. As imagens vetoriais sao usualmentemais leves e nao perdem qualidade ao serem ampliadas.
O interpretador do PGF/TikZ pode ser usado dentro do LATEX. Asimagens geradas podem ser ncorporadas ao texto de formaharm niosa.
PGF/TikZ
O PGF/TikZ e uma ferramenta extremamente poderosa e completa paracriar elementos graficos sofisticados.
Exemplos de codigos de imagens usando o PGF/TikZ:http://www.texample.net
Manual PGF/TikZ: http://repositorios.cpai.unb.br/ctan/graphics/pgf/base/doc/pgfmanual.pdf
Existem varios softwares gratuitos para a edicao de imagens vetoriaisusando PGF/TikZ. Por exemplo:
TikzEdt GraTeX LATEXPIX ktikz
E possıvel gerar codigo PGF/TikZ a partir do GeoGebra, SageMath,Inkscape, Octave, Gnuplot, dentre outros softwares gratuitos.
Imagens Vetoriais Exportar Imagens Vetoriais no Geogebra
Exportar figura do Geogebra para o LATEX
Crie uma imagem no Geogebra.
Escolha a janela de visualizacao de interesse em arquivo/exportar.
O Geogebra exporta em tres pacotes para gerar imagens
vetoriais: PStricks, Asymptote e PGF/TikZ.
Na opc~ao LateX(beamer class) os elementos da imagem s~ao
salvos para serem exibidos separadamente usando o
comando \onslide.
[email protected] MAT 172 - 2016/II 4 / 41
comandos no TikZ
Produzindo figuras com o TikZ
No preambulo e preciso inserir o pacote tikz
Para gerar uma imagem usa-se o ambiente tikzpicture.
Dentro do ambiente, podem ser usados, dentre outros, os comandos:
\draw – para desenhar linhas\fill – para preencher areas com cores solidas\shade – para preencher areas com cores gradientes\clip – para preencher areas com cores solidas
que terminam com ponto-e-vırgula ;
Com parametros opcionais altera-se os estilos de linhas e depreenchimentos.
Para imagens geradas usando unico comando, pode se usar ocomando \tikz no lugar do ambiente.
[email protected] MAT 172 - 2016/II 5 / 41
Exemplos
\begin{tikzpicture}
\draw (0,1)--(1,0);
\end{tikzpicture}
\begin{tikzpicture}
\draw (0,1)--(1,0)--(2,2)--cycle;
\end{tikzpicture}
\begin{tikzpicture}
\draw (0,0) rectangle (2,2);
\end{tikzpicture}
Exemplos
\begin{tikzpicture}
\draw (2,2) circle (1cm);
\end{tikzpicture}
\begin{tikzpicture}
\draw (0,0) ellipse (2cm and 0.5cm);
\end{tikzpicture}
\begin{tikzpicture}
\draw (1,0) arc (0:75:2cm);
\end{tikzpicture}
comandos no TikZ Mudancas no estilo padrao
Alterando estilos
Coloque os estilos desejados da linha no parametro opcional do \draw,separados por vırgula se tiver mais de um.
\begin{tikzpicture}
\draw[<->, thick, blue] (0,4)--(0,0) -- (4,0);
\draw[red, ultra thick, dashed] (2,2) circle (1cm);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 8 / 41
comandos no TikZ Mudancas no estilo padrao
Grade
\begin{tikzpicture}
\draw[step=0.5cm,help lines] (-1,-1) grid (3,2);
\draw[red] (0,0)--(1,1);
\draw[blue] (2,1) circle(0.1cm);
\end{tikzpicture}
A grid B produz uma grade em que os pontos A e B sao os vertices da diagonalprincipal da grade.
help lines gera linhas cinzas e finas (o padrao e cor preta e espessura normal).
step largura de cada subdivisao da grade (o padrao e 1)
[email protected] MAT 172 - 2016/II 9 / 41
comandos no TikZ cores
Cores
blackbluebrowncyandarkgray
graygreenlightgraylimemagenta
oliveorangepinkpurplered
tealvioletwhiteyellow
Duas cores podem ser misturadas com o comando cor_1!X!cor_2
em que X e a porcentagem utilizada da cor_1.
blue!40!red e a cor obtida com 40% azul e 60% de vermelho.Se a cor_2 for branca, ela pode ser omitida. Desta forma, produzem asmesmas cores os comandos cor!X!white e cor!X.
[email protected] MAT 172 - 2016/II 10 / 41
comandos no TikZ cores
Alguns estilos de linhas
Espessura:
ultra thin
very thin
thin
thick
very thick
ultra thick
line width=4
Setas:
<-
<->
|->>
>->>
<<->>
double
Tracejada ou pontilhada:
dotted
densely dotted
loosely dotted
dashed
loosely dashed
[email protected] MAT 172 - 2016/II 11 / 41
comandos no TikZ comando fill
Exemplo - fill
\begin{tikzpicture}
\fill[blue] (0,0) rectangle (1,1);
\fill[blue!40!] (1.5,0) rectangle (2.5,1);
\fill[blue!40!lime, draw=black] (3,0) rectangle (4,1);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 12 / 41
comandos no TikZ comando fill
Exemplo
\begin{tikzpicture}
\draw [fill=blue] (0,0) rectangle (1,1) rectangle (2,2);
\draw [fill=white, fill opacity=0.5, double] (0.5,0.5) rectangle (1.5,1.5);
\draw [fill=white] (3.5,0.5) rectangle (4.5,1.5);
\draw [fill=blue] (3,0) rectangle (4,1) rectangle (5,2);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 13 / 41
comandos no TikZ comando shade
Exemplo - shade
\begin{tikzpicture}
\shade[left color=blue,right color=red] (0,0) rectangle (1,1);
\shade[top color=blue,bottom color=red] (1.5,0) rectangle (2.5,1);
\shade[inner color=red,outer color=blue] (3,0) rectangle (4,1);
\shade[inner color=blue, outer color=green, draw=black] (4.5,0) rectangle (5.5,1);
\shade[ball color=blue!70!] (6,0) rectangle (7,1);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 14 / 41
comandos no TikZ pontos em coordenadas cartesianas e polares
Pontos
Podem ser em coordenadas:
cartesianas valores (x , y) separados por vırgula — (0,1)
polares valores (θ : r) separados por 2-pontos — (30:1)
\tikz\draw[->,magenta] (0,0)--(-45:1)--(30:2);
[email protected] MAT 172 - 2016/II 15 / 41
comandos no TikZ pontos em coordenadas cartesianas e polares
Coordenadas relativas de um ponto
++ atualiza as coordenadas do ponto em relacao ao ultimo ponto.
+ atualiza as coordenadas do ponto em relacao ao primeiro ponto.
\tikz\draw[->, thick, red] (1,1) -- ++(1,2) -- ++(2,1);
\tikz\draw[->, thick, blue] (1,1) -- +(1,2) -- +(2,1);
[email protected] MAT 172 - 2016/II 16 / 41
comandos no TikZ foreach
comando foreach
O comando foreach permite fazer iteracoes em uma lista.
\foreach <variables> in <list> <commands>.
\begin{tikzpicture}
\foreach \x in {0, 2, ..., 10}
\shade[ball color=green!\x0!red] (\x,0) circle (3mm);
\end{tikzpicture}
Alguns exemplos de listas:
comando sequencia gerada
\foreach \x in {10,...,6} 10, 9, 8, 7, 6\foreach \x in {a,...,f} a, b, c, d, e, f\foreach \x in {1,3,...,10} 1, 3, 5, 7, 9\foreach \x in {0.1, 1,...,3,9,...,11} 0.1, 1, 2, 3, 9, 10,11
[email protected] MAT 172 - 2016/II 17 / 41
comandos no TikZ foreach
comando foreach
\begin{tikzpicture}[scale=0.8]
\foreach \x in {0,...,3}
\foreach \y in {\x,...,3}{
\draw (\x,0.8*\y) circle (2mm);
\fill[green] (\x,0.8*\y) circle (1mm);
}
\end{tikzpicture}
0 1 2 3 4 5 6 7 8 9 10
\begin{tikzpicture}
\draw[fill=gray!10!] (-0.2, 0) rectangle (10.2,1);
\foreach \x in {0,...,10}
\draw (\x,0) -- (\x,0.4) (\x,0.6) node{\tiny\color{blue}\x};
\foreach \x in {0,...,20} \draw (0.5*\x,0) -- (0.5*\x,0.3);
\foreach \x in {0,...,100} \draw (0.1*\x,0) -- (0.1*\x,0.2);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 18 / 41
Comando node
O comando \node pode ser usado para rotular um no (para ser usado, porexemplo em outro comando) ou para exibir algum rotulo para o no.
\node[opcionais] at ponto {texto }
ponto node[opcionais] {texto }
\begin{tikzpicture}
\node[draw] (a) at (0, 0) {A};
\node[circle,fill=green] (b) at (0: 1.5) {B};
\draw [->] (a) -- (b);
\draw [->] (4,0) node[left,draw, fill=green]
{$v_i$} -- ++(0: 1) node[circle,right,draw] {$\alpha$};
\end{tikzpicture}
A B vi α
comandos no TikZ comando node
Opcionais do node
Alguns opcionais de posicao do node:
above, below, left, right, above right, below left, etc.
xshift=comprimento e yshift=comprimento
pos=numero entre 0 e 1 (para caminhos)
\begin{tikzpicture}
\draw[blue,rotate=30] (0,0) rectangle (2,1);
\draw[dashed] (0,0)--node[pos=.5,below] {\tiny $x$} (2,0);
\draw[->] (0.5,0) node[above right] {\tiny $\theta=30^o$} arc (0:30:0.5);
\end{tikzpicture}
x
θ = 30o
[email protected] MAT 172 - 2016/II 20 / 41
comandos no TikZ comando clip
Comando \clip
O comando \clip e usado para recortar regioes de modo que tudo queestiver fora dela (e que foi definido depois) nao e exibido.
\begin{tikzpicture}
\draw[blue] (-1,-1) rectangle (1,1);
\clip (0,0) circle (1cm);
\fill[lime] (0,1) rectangle (-1,-1);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 21 / 41
comandos no TikZ comando clip
Comando \clip
O efeito de multiplos comandos \clip e a exibicao da intersecao dasregioes recortadas.
\begin{tikzpicture}
\draw[blue] (-1,-1) rectangle (1,1);
\clip (0,0) circle (1cm);
\clip (-1,-1) rectangle (0,0);
\fill[lime] (0,1) rectangle (-1,-1);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 22 / 41
comandos no TikZ comando clip
Comando \clip
O ambiente scope delimita a area que sera afetada pelos comandos \clip
\begin{tikzpicture}
\draw[blue] (-1,-1) rectangle (1,1);
\clip (0,0) circle (1cm);
\clip (-1,-1) rectangle (0,0);
\fill[lime] (0,1) rectangle (-1,-1);
\draw (0,0) circle (1cm);
\end{tikzpicture}
\begin{tikzpicture}
\draw[blue] (-1,-1) rectangle (1,1);
\begin{scope}
\clip (0,0) circle (1cm);
\clip (-1,-1) rectangle (0,0);
\fill[lime] (0,1) rectangle (-1,-1);
\end{scope}
\draw (0,0) circle (1cm);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 23 / 41
comandos no TikZ comando clip
Exemplo
\begin{tikzpicture}
\begin{scope}
\clip (0,0) circle (1.5cm);
\clip (45:2cm) circle (1.5cm);
\fill[lime] (0:2cm) circle (1.5cm);
\end{scope}
\draw (0,0) circle (1.5cm) node[left] {$A$};
\draw (45:2cm) circle (1.5cm) node [above] {$B$};
\draw (0:2cm) circle (1.5cm) node [below right] {$C$};
\end{tikzpicture}
A
B
C
[email protected] MAT 172 - 2016/II 24 / 41
comandos no TikZ Linhas curvas
Linhas curvas
ligue pontos com o comando to
[out=angulo-saıda ,in=angulo-chegada ]
\begin{tikzpicture}
\draw [<->,thick, cyan] (0,0) to [out=90,in=180] (1,1)
to [out=0,in=180] (3,0);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 25 / 41
Desenho de curvas
Curvas
Uma curva pode ser desenhada com o comando plot({f(\x)},{g(\x)})
em que \x e a variavel e f e g sao funcoes de \x.
\begin{tikzpicture}
\draw[->] (-3,0)--(3,0);
\draw[->] (0,-1)--(0,4);
\draw[blue,domain=-2:2] plot(\x,{(\x)^2});
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 26 / 41
Desenho de curvas
Curvas
\begin{tikzpicture}[domain=-3:3]
\draw[->] (-3,0) -- (5,0) node[right] {$x$};
\draw[->] (0,-3) -- (0,5) node[above] {$y$};
\draw[scale=0.5,blue] plot (\x,{(\x)^2});
\draw[scale=0.5,red] plot ({\x*\x},\x);
\end{tikzpicture}
x
y
[email protected] MAT 172 - 2016/II 27 / 41
Desenho de curvas
Curvas
A curva e produzida ligando um conjunto de pontos tabelados. O numero de pontospode ser ajustado com o opcional samples=<num pontos>. Alem deste comando, oopcional smooth suaviza a curva gerada pela interpolacao dos pontos da tabela.
\begin{tikzpicture}
\draw[->] (-2*pi-0.5,0) -- (2*pi+0.5,0) node[right] {$x$};
\draw[->] (0,-1.5) -- (0, 1.5) node[above] {$y$};
\draw[blue, domain=-2*pi:2*pi, smooth] plot (\x,{sin(\x r)});
\end{tikzpicture}
x
y
O angulo padrao e em graus. Para definir em radianos e preciso acrescentar r noparametro da funcao trigonometrica (como no caso da funcao seno na imagem.).
[email protected] MAT 172 - 2016/II 28 / 41
Desenho de curvas
Curvas - Exemplo
\begin{tikzpicture}[domain=0:4]
\draw[help lines] (-0.1,-1.1) grid (3.9,3.9);
\draw[->] (-1,0) -- (4,0) node[right] {$x$};
\draw[->] (0,-1) -- (0, 4) node[above] {$y$};
\draw[blue] plot (\x,{sin(\x r)}) node[right] {$f(x) = \text{sen\,}x$};
\draw[orange] plot (\x,{0.05*exp(\x)}) node[right]
{$g(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}
x
y
f (x) = sen x
g(x) = 120ex
[email protected] MAT 172 - 2016/II 29 / 41
Curvas - Exemplos
\begin{tikzpicture}[xscale=10,yscale=3]
\draw [<->] (0,1) -- (0,0) -- (0.6,0);
\draw[green, thick, domain=0:0.5] plot (\x, {0.025+\x+(\x)^2});
\end{tikzpicture}
Curvas - Exemplo
\begin{tikzpicture}[scale=0.4]
\draw[->] (-5,0) -- (5,0) node[right] {$x$};
\draw[->] (0,-5) -- (0,5) node[above] {$y$};
\draw[scale=0.5,blue, samples=100, domain=0:4*pi]
plot ({\x*sin(\x r)},{\x*cos(\x r)});
\end{tikzpicture}
x
y
Desenho de curvas
Curvas
Para desenhar o grafico de funcoes descontınuas a estrategia mais simples e dividir afuncao pelas partes contınuas.
\begin{tikzpicture}[scale=0.4]
\draw[->] (-4,0) -- (4,0) node[right] {$x$};
\draw[->] (0,-4) -- (0,4) node[above] {$y$};
\draw[domain=-7/2:-1/4,color=blue] plot (\x,{1/\x});
\draw[domain=1/4:7/2,blue] plot (\x,{1/\x}) node[above] {$y=\frac{1}{x}$};
\end{tikzpicture}
x
y
y = 1x
[email protected] MAT 172 - 2016/II 32 / 41
Desenho de curvas
Curvas
E possıvel especificar o nome da variavel em vez de usar o padrao \x.
\begin{tikzpicture}[scale=0.5]
\draw[->] (-3.2,0) -- (3.2,0) node[right] {$x$};
\draw[->] (0,-3.2) -- (0,3.2) node[above] {$y$};
\draw (-3,-3) -- (3,3) (-3,3) -- (3,-3);
\draw[blue,domain=-1.8:1.8,variable=\t]
plot ({cosh(\t)},{sinh(\t)}) node[right]{$x^2-y^2=1$};
\draw[blue,domain=-1.8:1.8,variable=\t]
plot ({-cosh(\t)},{sinh(\t)});
\end{tikzpicture}
x
y
x2 − y 2 = 1
[email protected] MAT 172 - 2016/II 33 / 41
Desenho de curvas Area Hachurada
Regioes Hachuradas
\begin{tikzpicture}
\fill[blue!40!] (pi/4,0) --
plot [domain=pi/4:3*pi/4] (\x,{sin(\x r)}) -- (3*pi/4,0) -- cycle;
\draw plot[domain=0:pi] (\x,{sin(\x r)});
\draw[<->] (-0.3,0) -- (pi+0.3,0);
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 34 / 41
Desenho de curvas Area Hachurada
Regioes Hachuradas
\begin{tikzpicture}
\shade[left color=blue!40!green, right color=green, domain=1:2]
(1,0)--plot (\x,{1/\x})--(2,0)--cycle;
\draw[domain=0.8:2.4, blue, thick] plot (\x,{1/\x});
\draw (1,0) node[below]{\tiny $a$} (2,0) node[below]{\tiny $b$};
\draw[->] (-1,0) -- (2.6,0) node[right] {$x$};
\draw[->] (0,-0.5) -- (0,1.5) node[above] {$y$};
\end{tikzpicture}
a bx
y
[email protected] MAT 172 - 2016/II 35 / 41
Desenho de curvas Figura 3D
Exemplo Figura 3D
\begin{tikzpicture}
\shade[bottom color=red] (0,0,0)--(1,0,0)--(1,2,0)--(0,2,0)--cycle;
\shade[top color=gray] (0,2,0)--(0,2,-2)--(1,2,-2)--(1,2,0)--cycle;
\shade[left color=blue] (1,0,0)--(1,2,0)--(1,2,-2)--(1,0,-2)--cycle;
\end{tikzpicture}
[email protected] MAT 172 - 2016/II 36 / 41
graficos com o pacote pgfplots
Pacote pgfplots
O pgfplots e um pacote para ser usado com o TikZ que permite aconstrucao de graficos mais complexos.
Inserir no preambulo: \usepackage{pgfplots}
Em um ambiente tikzpicture, inserir o ambiente axis que diz respeitoaos eixos dos graficos:
\begin{tikzpicture}
\begin{axis}[opcionais]
<comandos>
\end{axis}
\end{tikzpicture}
Dentro do ambiente axis:
para graficos 2D: \addplot[opcionais]{func~ao}para graficos 3D: \addplot3[opcionais]{func~ao}
[email protected] MAT 172 - 2016/II 37 / 41
graficos com o pacote pgfplots Graficos em 2D
Exemplo
\begin{tikzpicture}
\begin{axis}
\addplot(\x,{sin(\x r)});
\end{axis}
\end{tikzpicture}
−6 −4 −2 0 2 4 6
−1
−0.5
0
0.5
1
\begin{tikzpicture}
\begin{axis}
\addplot[smooth](\x,{sin(\x r)});
\end{axis}
\end{tikzpicture}
−6 −4 −2 0 2 4 6
−1
−0.5
0
0.5
1
[email protected] MAT 172 - 2016/II 38 / 41
Exemplo
\begin{tikzpicture}
\begin{axis}[xlabel=$x$, ylabel=$y$, ytick={1}, axis lines=center,
xmin=-4,xmax=4,ymin=-3,ymax=5,scale=0.8,transform shape]
\addplot[smooth]{x^3};
\draw[dotted, thick, red] (axis cs:0,1)--(axis cs:1,1)--(axis cs:1,0);
\addplot [mark=o,ultra thin,draw=black] coordinates {(1,1)};
\end{axis}
\end{tikzpicture}
−4 −2 2 4
1
x
y
graficos com o pacote pgfplots Curvas em 3D
Exemplo Graficos 3D
\begin{tikzpicture}
\begin{axis}[domain=-3:3]
\addplot3[surf]{-y^2 + x^2};
\addplot3[surf]{x^2 + y^2)};
\end{axis}
\end{tikzpicture}
−20
2 −2
0
2
0
20
[email protected] MAT 172 - 2016/II 40 / 41
graficos com o pacote pgfplots Bibliotecas adicionais
Bibliotecas especiais
\usepgfplotslibrary{fillbetween}
\begin {axis}[smooth,no markers,axis lines=center,
xmin=-3.5,xmax=3.5,ymin=-3,ymax=4, xticklabels={},yticklabels={}]
\addplot [domain=-3:3] {-x^2+2};
\addplot [domain=-3:3]{x};
%
\addplot [name path=A, domain=-2:1] {x};
\addplot [name path=B, domain=-2:1] {-x^2+2};
\addplot [fill=magenta, fill opacity=0.4] fill between[of=B and A];
\end {axis}
\end {tikzpicture}
[email protected] MAT 172 - 2016/II 41 / 41