Arquivo da tag: plot

Algumas dicas não triviais para plots no Maple


Eu aconselho qualquer um que esteja começando a precisar usar software de manipulação algébrica a não usar o Maple. Apesar de ter uma linguagem bastante simples e uma excelente interface (não gosto muito da IDE do Mathematica), o CAS canadense possui uns bugs muito irritantes, que um dia ainda escreverei sobre. Mas, como já tenho muita coisa escrita no Maple, ficaria difícil mudar para outro software no momento, ainda mais no fim do doutorado.

Uma coisa chata de se fazer no Maple (e que é trivial em outros sistemas, como por exemplo no Mathematica), é ajustar o tamanho dos eixos de um gráfico através de um comando, coisa fundamental para padronizar plots para publicação. O padrão fornecido é o ajuste via “clicar na figura e arrastar”, algo totalmente não prático.

Outro procedimento que, na minha opinião, deveria ser mais prático é o de exportação de figuras no tamanho/resolução escolhido pelo usuário. Por default, você pode clicar com o botão direito do mouse sobre um plot, e escolher a opção “exportar” no popup que se abre. No entanto, não é fornecida nenhuma opção ao usuário além do formato desejado para a figura. Nada de escolher resolução/qualidade/tamanho etc.

Depois de algum tempo pesquisando, consegui finalmente encontrar a solução para meus problemas aqui: http://www.mapleprimes.com/questions/125945-Plot-Size-On-Export-With-Maple-15

A idéia é criar uma função, chamada no Maple de “Procedure”, para especificar as opções desejadas para exportar seu plot:

MakeWidePlot := proc(p::evaln)
     local name, place, opts:
         name := cat("c:/temp/",convert(p,string),".ps"):
         opts := `landscape,width=1024,height=768,noborder`:
     plotsetup('ps', 'plotoutput'=cat(name), 'plotoptions'=opts):
     print( plots:-display( eval(p), 'axesfont' = [ TIMES, 10 ],
                            'labelfont' = [ TIMES, ROMAN, 10] ) ):
     plotsetup(default):
   end proc:

MakeWidePlot(P);

No pedaço de código acima, “P” é o plot definido anteriormente no qual será aplicado as especificações acima, como altura, largura, modo paisagem ou retrato etc. Por exemplo, “P” pode ser:

P:=plot(x^2,x=-1..1);

Também funciona no ambiente “display”, por exemplo,

P:=display({plot1,plot2…},opts);

Isso mata dois coelhos com uma cajadada só: o problema do tamanho da figura exportada, e o ajuste do tamanho dos eixos.

Até a próxima!

Anúncios

Comandos no Xmgrace (post it)


O Grace é um programa para elaboração de gráficos técnicos, ou seja, com qualidade respeitável 😉 Ele é bastante versátil. Além de fazer o básico, que é abrir um arquivo .dat e plotar os pontos no plano cartesiano (plots 3d “ainda” não são possíveis), ele conta com diversas outras funções, como data fitting, transformada de Fourier etc.

Na minha opinião, os grandes pontos fracos desse programa são a arcaica interface e a edição de legendas/texto. Os comandos para escrever equações matemáticas e símbolos são bastante antiquados. Seria ótimo se implementassem algum tipo de compatibilidade com LaTeX…

Este post é justamente para colecionar dicas achadas por aí, para eu não ter que fazer uma varredura no Google quando esquecer ou quiser aprender algum comando ou procedimento específico.

Um tutorial bem abrangente, mas um pouco superficial: http://plasma-gate.weizmann.ac.il/Grace/doc/Tutorial.html#ss2.5

Tutorial mais detalhado, contendo lista de funções etc: http://mintaka.sdsu.edu/reu/grace.tutorial.html

Notas sobre o Grace: http://www.physics.ohio-state.edu/~driver/xmgrace_notes.html

Esse site acima contém uma boa tabela de comandos de texto. Abaixo a reproduzo para futuras referências:

Typesetting

Grace permits quite complex typesetting on a per string basis. Any
string displayed (titles, legends, tick marks,...) may contain special
control codes to display subscripts, change fonts within the string
etc.

Example:

F\sX\N(\xe\f{}) = sin(\xe\f{})\#{b7}e\S-X\N\#{b7}cos(\xe\f{}) 

Control code Description
\f{x} switch to font named "x", e.g. \f{Times}
\f{n} switch to font number n
\f{}  return to original font
\R{x} switch to color named "x"
\R{n} switch to color number n
\R{}  return to original color
\#{x} treat "x" (must be of even length) as list of hexadecimal char
codes
\t{xx xy yx yy}apply transformation matrix
\t{}  reset transformation matrix
\z{x} zoom x times
\z{}  return to original zoom
\r{x} rotate by x degrees
\l{x} slant by factor x
\v{x} shift vertically by x
\v{}  return to unshifted baseline
\V{x} shift baseline by x
\V{}  reset baseline
\h{x} horizontal shift by x
\n new line
\u begin underline
\U stop underline
\o begin overline
\O stop overline
\Fk enable kerning
\FK disable kerning
\Fl enable ligatures
\FL disable ligatures
\m{n} mark current position as n
\M{n} return to saved position n
\dl LtoR substring direction
\dr RtoL substring direction
\dL LtoR text advancing
\dR RtoL text advancing
\x  switch to Symbol font (same as \f{Symbol})
\+  increase size (same as \z{1.19} ; 1.19 = sqrt(sqrt(2)))
\-  decrease size (same as \z{0.84} ; 0.84 = 1/sqrt(sqrt(2)))
\s  begin subscripting (same as \v{-0.4}\z{0.71})
\S  begin superscripting (same as \v{0.6}\z{0.71})
\T{xx xy yx yy}	same as \t{}\t{xx xy yx yy}
\Z{x} absolute zoom x times (same as \z{}\z{x})
\q make font oblique (same as \l{0.25})
\Q undo oblique (same as \l{-0.25})
\N return to normal style (same as \v{}\t{})
\\ print \
\n switch to font number n (0-9) (deprecated)
\c begin using upper 128 characters of set (deprecated)
\C stop using upper 128 characters of set (deprecated)

Alguns sugerem uma mistura do Grace e do Inkscape para facilitar o “acabamento” de seus gráficos. A idéia seria gerar o gráfico no xmGrace e fazer as inclusões de textos com o Inkscape através de sua extensão LaTeX: http://wiki.inkscape.org/wiki/index.php/LaTeX

Até mais,