Может быть, следующий подход интересен, хотя и не идеален?
Для условия 3*19*y^2-6*x>0
создается переменная z2
. z2
стирается везде, кроме случаев, когда оно близко к z
. Затем он окрашивается в красно-синюю карту цветов, красный для положительной части, синий для отрицательной и белый вокруг 0.
Фон установлен на черный, а цвет контура - на белый, чтобы было достаточно контрастность.
Обратите внимание, что для получения информативных осей как для графика contour
, так и для imshow
необходимо установить параметр extent
.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2, 2, 1000)
y = np.linspace(-1, 1, 1000)
X, Y = np.meshgrid(x, y)
z = (19) * Y ** 3 - 6 * X * Y - 1
z2 = 3 * 19 * Y ** 2 - 6 * X
z2 = np.where(np.abs(z) < 0.2, z2, np.NaN)
plt.gca().set_facecolor('black')
plt.imshow(z2, cmap='coolwarm', vmin=-1, vmax=+1, alpha=1, extent=[-2, 2, -1, 1], origin='lower')
plt.contour(z, 0, extent=[-2, 2, -1, 1], zorder=3, colors='white')
plt.show()