Я новичок в python и за тонну выучил за последние 2 недели.Я только начал изучать и экспериментировать с matplotlib.pylot.В моем коде у меня есть 3 отдельных простых графика на одном графике, на третьем графике 2 линии.Я пытаюсь получить зеленый fill_between, когда y2> y3, и красный fill_between, когда y3> y2.Я взглянул на другой код, и он выглядит идентично моему, но по какой-то причине он не работает.Любая помощь?
Есть несколько закомментированных строк, они просто эксперименты.
import matplotlib.pyplot as plt
import random
from matplotlib import style
style.use('fivethirtyeight')
def create_points(nPoints):
xs = []
ys = []
for i in range(nPoints):
rand = random.randrange(0,3*nPoints)
xs.append(i)
ys.append(rand)
return xs, ys
x,y = create_points(200)
x1,y1 = create_points(200)
x2, y2 = create_points(200)
x3, y3 = create_points(200)
fig = plt.figure()
ax1 = plt.subplot2grid((6,1), (0,0), rowspan = 1, colspan = 1)
plt.title('Subplot2grid Method')
plt.ylabel('Plot 1')
ax2 = plt.subplot2grid((6,1), (1,0), rowspan = 4, colspan = 1, sharex = ax1)
plt.ylabel('Plot 2')
ax2_xtwin = ax2.twinx()
ax3 = plt.subplot2grid((6,1), (5,0), rowspan = 1, colspan = 1, sharex = ax1)
plt.xlabel('x')
plt.ylabel('Plot 3')
ax2_xtwin.fill_between(x,0,y, facecolor = '#0079a3', alpha = 0.4)
#ax2v.axes.yaxis.set_ticklables([])
ax2_xtwin.grid(False)
ax2_xtwin.set_ylim(0, 1.5*max(y))
ax3.plot(x2, y2, x2, y3, linewidth = 1, label = 'x2y2 plot', color = 'k')
#ax3.plot(x3, y3, linewidth = 1, label = 'x3y3 plot', color = 'firebrick')
ax3.fill_between(x2, y2, y3, where = (y2 >= y3), facecolor = 'darkgreen',
edgecolor = 'g', alpha = 0.5, interpolate = True)
ax3.fill_between(x2, y2, y3, where = (y2 <= y3), facecolor = 'firebrick',
edgecolor = 'r', alpha = 0.5, interpolate = True)
#Print Points
ax1.plot(x, y, linewidth = 1, label = 'xy plot', color = 'gold')
ax2.plot(x1, y1, linewidth = 1, label = 'x1y1 plot', color = 'sandybrown')
#ax3.plot(x2, y2, linewidth = 1, label = 'x2y2 plot', color = 'darkgreen')
#ax3.plot(x3, y3, linewidth = 1, label = 'x3y3 plot', color = 'firebrick')
plt.subplots_adjust(left = 0.15, bottom = 0.1, right = 0.9, top = 0.9,
wspace = 0.2, hspace = 0)
plt.show()