Eu estava precisando de gerar uns gráficos 3d de um trabalho que estou fazendo, então descobri que é possível fazer esses gráfico com python usando o módulo matplotlib. A figura abaixo é um exemplo do que eu estou falando:
As letras gregas que dão nomes ao eixos são obtidas usando comandos nativos de latex ($\rho$, $\mu$, $\theta$).
Veja como é relativamente simples usar essa ferramenta.
O primeiro passo é importar os módulos necessários.
from numpy import *
import pylab as p
import mpl_toolkits.mplot3d.axes3d as p3
import pylab as p
import mpl_toolkits.mplot3d.axes3d as p3
Note que o módulo usado para gerar o gráfico 3d chama-se "mpl_toolkits.mplot3d.axes3d".
Vamos definir as variáveis e a função z=f(x,y).
# u é um vetor que varia de 0 a 2*pi, com 100 elementos
u=r_[0:2*pi:100j]
# v é um vetor que varia de 0 a 2*pi, com 100 elementos
v=r_[0:pi:100j]
# x, y, e z são as coordenadas no pontos para se criar o gráfico
#
x=10*outer(cos(u),sin(v))
y=10*outer(sin(u),sin(v))
z=10*outer(ones(size(u)),cos(v))
Agora vamos gerar o gráfico e salva-lo em um arquivo png.
fig=p.figure()
ax = p3.Axes3D(fig)
ax.plot_wireframe(x,y,z)
ax.set_xlabel(r'$ \rho $')
ax.set_ylabel(r'$ \mu $')
ax.set_zlabel(r'$ \theta $')
p.savefig('fig3d.png')
Segue o código completo abaixo:
from numpy import *
import pylab as p
import mpl_toolkits.mplot3d.axes3d as p3
# u and v are parametric variables.
# u is an array from 0 to 2*pi, with 100 elements
u=r_[0:2*pi:100j]
# v is an array from 0 to 2*pi, with 100 elements
v=r_[0:pi:100j]
# x, y, and z are the coordinates of the points for plotting
# each is arranged in a 100x100 array
x=10*outer(cos(u),sin(v))
y=10*outer(sin(u),sin(v))
z=10*outer(ones(size(u)),cos(v))
fig=p.figure()
ax = p3.Axes3D(fig)
ax.plot_wireframe(x,y,z)
ax.set_xlabel(r'$ \rho $')
ax.set_ylabel(r'$ \mu $')
ax.set_zlabel(r'$ \theta $')
p.savefig('fig3d.png')
Para quem quiser saber mais, veja http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/index.html
Até a próxima.
Nenhum comentário:
Postar um comentário