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