Чтобы нарисовать неявные уравнения (или неравенства), sympy s plot_implicit
может пригодиться. Просто вызывая plot_implicit(Eq(x+Abs(x), y+Abs(y)))
dr aws уравнение с некоторыми границами по умолчанию.
К сожалению, построение sympy довольно примитивно в опциях, и стандартные функции matplotlib сложно комбинировать. Кроме того, в части документации все еще говорится о «графике Пиглета», который на самом деле больше не поддерживается.
from sympy import Abs, Eq, plot_implicit
from sympy.abc import x, y
# plot_implicit(Eq(x+Abs(x), y+Abs(y)))
plot_implicit(Eq(x+Abs(x), y+Abs(y)), (x, -20, 20), (y, -20, 20))
Использование некоторых трюков из этот пост , симпатичный сюжет может быть перемещен по осям matplotlib. Там можно изменить поворот метки y и толщину линии (кажется, недостаточно просто изменить ширину, а затем необходимо задать цвет кромки).
from sympy import Abs, Eq, plot_implicit
from sympy.abc import x, y
from matplotlib import pyplot as plt
import matplotlib as mpl
def move_sympyplot_to_axes(p, ax):
backend = p.backend(p)
backend.ax = ax
# backend.process_series()
backend._process_series(backend.parent._series, ax, backend.parent)
backend.ax.spines['right'].set_color('none')
backend.ax.spines['bottom'].set_position('zero')
backend.ax.spines['top'].set_color('none')
plt.close(backend.fig)
p1 = plot_implicit(Eq(x+Abs(x), y+Abs(y)), (x, -20, 20), (y, -20, 20), show=False)
fig, ax = plt.subplots()
move_sympyplot_to_axes(p1, ax)
plt.setp(ax.yaxis.get_label(), 'rotation', 0)
ax.get_children()[0].set_linewidth(2)
ax.get_children()[0].set_edgecolor('deepskyblue')
plt.show()