曲线条件颜色下的Matplotlib区域

2024-10-03 11:25:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图填充两个直线图之间的区域,如下所示:

import matplotlib.pyplot as plt
import numpy as np


ROCE = np.array([-7.0,-14.0,-11.0,8.0,7.0,17.0,10.0,9.0])
WACC = np.array([4.5, 5.1, 4.7, 3.4, 2.9, 3.7, 3.6, 3.9])
YEAR = np.array([2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019])

fig, ax = plt.subplots(1,1)
ax.plot(YEAR, ROCE, color = 'blue')
ax.plot(YEAR, WACC, color = 'black')
ax.fill_between(YEAR, ROCE, WACC, where=ROCE >= WACC, facecolor='green')
ax.fill_between(YEAR, ROCE, WACC, where=ROCE <= WACC, facecolor='red')

然而,我有一个问题,在这一点上的线交叉,可以看到在附加的图像。我想我必须对直线点进行插值。你知道怎么解决这个问题吗

谢谢

Plot


Tags: importplotasnppltbetweenaxwhere
1条回答
网友
1楼 · 发布于 2024-10-03 11:25:09

默认情况下,^{}只查看给定的值。但是它也有一个插值选项,可以找到where参数的精确交叉点

import matplotlib.pyplot as plt
import numpy as np

ROCE = np.array([-7.0,-14.0,-11.0,8.0,7.0,17.0,10.0,9.0])
WACC = np.array([4.5, 5.1, 4.7, 3.4, 2.9, 3.7, 3.6, 3.9])
YEAR = np.array([2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019])

fig, ax = plt.subplots(1,1)
ax.plot(YEAR, ROCE, color = 'blue')
ax.plot(YEAR, WACC, color = 'black')
ax.fill_between(YEAR, ROCE, WACC, where=ROCE >= WACC, interpolate=True, facecolor='green')
ax.fill_between(YEAR, ROCE, WACC, where=ROCE <= WACC, interpolate=True, facecolor='red')
plt.show()

resulting plot

相关问题 更多 >