#python #matplotlib
#python #matplotlib
Вопрос:
Мне нужно получить следующий график:
Я использовал:
fig_2, ax_2 = plt.subplots(figsize=(10, 10))
x1 = np.arange(-2, 2.1, 0.1)
x2 = np.arange(-5, -1.9, 0.1)
x3 = np.arange(2, 5.1, 0.1)
ax_2.hlines(y=5, xmin=-2, xmax=2)
ax_2.hlines(y=15, xmin=-2, xmax=2)
ax_2.hlines(y=30, xmin=-2, xmax=2)
ax_2.hlines(y=40, xmin=-2, xmax=2)
ax_2.vlines(x=-2, ymin=-2, ymax=55)
y1 = ax_2.vlines(x=2, ymin=-2, ymax=55)
y2 = ax_2.vlines(x=0, ymin=-2, ymax=55)
ax_2.fill_between(x1, 5, 15, facecolor="LightYellow")
ax_2.fill_between(x1, 15, 30, facecolor="LightGreen")
ax_2.fill_between(x1, 30, 40, facecolor="LightYellow")
ax_2.fill_between(x1, 40, 50, facecolor="Lightcoral")
ax_2.fill_between(x1, 0, 5, facecolor="Lightcoral")
ax_2.fill_between(x2, 0, 50, facecolor="Lightcoral")
ax_2.fill_between(x3, 0, 50, facecolor="Lightcoral")
Но этот метод выглядит очень громоздким. Может быть, есть осторожное решение?
Ответ №1:
Может быть, вот так?
from matplotlib import pyplot as plt
fig_2, ax_2 = plt.subplots(figsize=(10, 10))
ax_2.hlines(y=[5, 15, 30, 40], xmin=-2, xmax=2)
ax_2.vlines(x=[-2, 0, 2], ymin=-2, ymax=55)
ax_2.fill_between([-5, 5], 0, 50, facecolor="Lightcoral")
ax_2.fill_between([-2, 2], 5, 40, facecolor="LightYellow")
ax_2.fill_between([-2, 2], 15, 30, facecolor="LightGreen")
plt.show()