Primeiramente, importamos os módulos necessários:
from IPython.display import display, Math
from sympy import *
init_printing()
Função simples de única variável:
x = symbols('x')
expressão = x*x
plot(expressão);
Para especificarmos o limite do gráfico, passamos uma tupla no formato: (variável, limite_menor, limite_maior).
expressão = x**2
limite_expressão = (x,-3,7)
plot(expressão, limite_expressão);
Para configurar o Título e os Rótulos, passamos os argumentos com as palavras-chave: title, xlabel, ylabel.
Lembrando que LateX é suportado por esses argumentos.
expr = x**2
expr_range = (x,-2,2)
title = '$y = {}$'.format(latex(expr))
plot(expr, expr_range, title=title, xlabel='x', ylabel='y');
Passamos o argumento line_color para definirmos a cor da linha:
x = symbols('x')
expr = x**3
plot(expr, expr_range, line_color='g');
Para isso utilizamos a sintáxe: plot(expr_1, expr_2, expr_3, limite).
expr_1 = x
expr_2 = x**3
expr_3 = abs(x)
plot(expr_1, expr_2, expr_3, (x, -1, 1));
Para isso, utilizamos a seguinte sintaxe:
plot(
(expr_1,range_1),
(expr_2,range_2),
...
)
expr_1 = x**2
range_1 = (x,-2,2)
expr_2 = x
range_2 = (x,-1,3)
plot(
(expr_1,range_1),
(expr_2,range_2)
);
Para esta tarefa:
show = False
para suprimirmos a exibição do gráfico, salvamos o objeto retornado para uma variável.expr_1 = x**2
range_1 = (x,-2,2)
expr_2 = x
range_2 = (x,-1,1)
p = plot(
(expr_1,range_1),
(expr_2,range_2),
show = False
);
p[0].line_color = 'g'
p[1].line_color = 'r'
p.show()
Para adicionarmos uma legenda ao gráfico, é necessário dois passos adicionais
Legend = True
no momento de construção do objeto plotting.expr_1 = x**2
range_1 = (x,-2,2)
expr_2 = x
range_2 = (x,-1,1)
p = plot(
(expr_1,range_1),
(expr_2,range_2),
show = False,
legend = True
);
p[0].line_color = 'g'
p[1].line_color = 'r'
p[0].label = 'Linha 1'
p[1].label = 'Linha 2'
p.show()
Plotagem única:
Utilizamos a função plot3d(expr, limite_x, limite_y) para desenharmos um gráfico 3D.
from sympy.plotting import plot3d
x, y = symbols('x y')
expr = x*y
limite_x = (x, -5, 5)
limite_y = (y, -5, 5)
plot3d(expr, limite_x, limite_y);
Para desenharmos múltiplas plotagens de um gráfico 3D, utilizamos a seguinte sintaxe:
plot3d(
(expr_1, limite_x_1 , limite_y_1),
(expr_2, limite_x_2 , limite_y_2)
)
plot3d(
(x**2 + y**2, (x, -5, 5), (y, -5, 5)),
(x*y, (x, -3, 3), (y, -3, 3))
);
Utilizamos a função plot_parametric(expr_x, expr_y, limite_u) para desenharmos uma função paramétrica de variável única:
from sympy.plotting import plot_parametric
u = symbols('u')
expr_x = cos(u)
expr_y = sin(u)
p = plot_parametric(expr_x, expr_y, (u, -5, 5));
Utilizamos a função plot3d_parametric_line(expr_x, expr_y, expr_z, limite_u) para desenharmos uma função paramétrica 3D:
from sympy.plotting import plot3d_parametric_line
u = symbols('u')
expr_x = cos(u)
expr_y = sin(u)
expr_z = u
plot3d_parametric_line(expr_x, expr_y, expr_z, (u, -5, 5));
Utilizamos a função plot3d_parametric_surface(expr_x, expr_y, expr_z, limite_u, limite_v) para desenharmos uma superfície 3D paramétrica:
from sympy.plotting import plot3d_parametric_surface
u, v = symbols('u v')
expr_x = cos(u + v)
expr_y = sin(u - v)
expr_z = u - v
u_range = (u, -5, 5)
v_range = (v, -5, 5)
plot3d_parametric_surface(expr_x, expr_y, expr_z, u_range, v_range);
Função implícita de única variável:
Utilizamos a função plot_implicit(equação) para desenhar gráficos de funções implícitas:
p1 = plot_implicit(x**2 + y**2 - 5);
p2 = plot_implicit(
Eq(x**2 + y**2, 3),
(x, -3, 3),
(y, -3, 3)
)
Para utilizarmos, passamos uma desigualdade para a função plot_implicit():
plot_implicit(y > x**2);
Para combinarmos diversas condições para definir uma região, podemos utilizar as conjunções lógicas And e Or:
plot_implicit(And(y > x, y > -x));
plot_implicit(Or(y > x, y > -x));
As vezes SymPy não escolhe a variável para o eixo horizontal como nós esperamos:
plot_implicit((y - 1));
Neste caso, utilizamos x_var para escolhermos a variável para o eixo-x:
plot_implicit((y - 1), x_var=x);
Para mais informações e detalhes, visite a documentação oficial da biblioteca SymPy: docs.