Gráficos

Julia Para Economistas

Essa página trata extensivamente de como fazer gráficos no Julia. A principal biblioteca para isso é o Plots, que é "só" um pacote que amarra vários outros com uma sintaxe comum. Eu vou mostrar no fim como mudar qual pacote está sendo usado para fazer os plots, mas eu acho que o padrão (GR) produz resultados extremamente aceitáveis - melhor que os plots usuais do R, por exemplo.

O Básico

Podemos querer fazer o gráfico de uma variável, y, que é uma função continua como x2x^2. Para isso, vamos primeiro chamar o pacote e definir a função plot:

using Plots

f(x) = x^2

Parafazer o plot em um conjunto de valores de x específicos podemos gerar eles usando os comandos que geram sequências e passar para o comando plot e para a função:

xx = -2:0.01:2
plot(xx,f.(xx))

Basicamente estamos gerando um grid de valores, espaçados em 0.010.01 e avaliando a função em todos os pontos. Veja que a primeira vez que chamamos o plot ele é um pouco lento em gerar a imagem. Isso é só na primeira vez em cada vez que rodamos o Julia - chamadas subsequentes são mais agéis.

Podemos querer fazer o gráfico de outra função por cima. Para isso, basta usar o plot com uma exclamação depois (plot!). Vou fazer o gráfico da função que já definimos e da função 2x33x22x^3-3x^2:

h(x)=2x^3-3x^2
plot(f)
plot!(h)

Veja que ao usar o plot!, o gráfico automaticamente muda o tamanho do eixo y e coloca a nova linha com uma cor diferente.

Nós podemos fazer várias mudanças no gráfico. Entre as mais frequentes:

  • w muda a espessura da linha. É um número inteiro.

  • line muda o tipo da linha. O argumento é escrito de uma maneira curiosa: é :algumacoisa. Assim, :dash gera uma linha tracejada, :solid gera uma linha inteira (que é o default). Veja outras opções no site do Plots.

  • label muda a legenda. É uma string1.

  • legend muda a posição da legenda. É como no line, e recebe um argumento com dois pontos. :topleft muda a legenda para o canto esquerdo superior (o padrão é no canto direito) etc.

Eis aqui uma ilustração do uso desses argumentos:

plot(x,g.(x),legend = :topleft,label = "g(x)")
plot!(x,h.(x),line = :dash,label = "h(x)",w=2)

Pontos, não linhas

O plot, por default, faz linhas. Às vezes queremos o gráfico exibindo uma nuvem de pontos e não linhas. O comando scatter faz isso. Por exemplo, eu posso gerar 100 números saídos de uma Normal com média 0 e variância 1:

vals =  randn(100)
scatter(vals)

Nós podemos usar scatter! para colocar pontos por cima ou até mesmo plot! para colocar uma linha no gráfico.

Histogramas

Produzir histogramas também é simples: o comando é histogram. Histogramas podem ser colocados um sobre o outro:

vals1 = randn(100)
vals2 = randn(500)

histogram(vals1)
histogram!(vals2)

Veja que as vezes o resultado de um histograma podem cobrir o outro completamente, como ocorreu na figura acima. Podemos colocar um valor para a transparência do gráfico com a opção alpha:

histogram(vals1)
histogram!(vals2,alpha=0.7)

Veja que também podemos usar labels para mudar a legenda nos histogramas.

Salvando o resultado

Uma vez que você esteja satisfeito com o gráfico, salvar é bem simples: basta usar png(caminho do arquivo). Esse comando vai salvar o gráfico que está sendo exibido, no caso do Atom. Para salvar um dos gráficos que compõe esta página, eu usei:

png("C:\\Users\\User\\Documents\\GitHub\\Julia-Para-Economistas\\Julia Para Economistas\\src\\imagens\\grafico_ex2")
Obviamente, isso salva o arquivo no formato png - que é o mais comum hoje em dia e tem tamanho bastante aceitável. Outros formatos estão disponíveis. Infelizmente, eps, que é um formato usado com frequência em documentos do LaTeX, não está implementado para o GR, e não existe um comando eps() para salvar imagens (até onde eu sei).


1Uma expressão entre aspas que vai ser intepretada como um texto. Ex.: "texto".