matplotlib p上的不同背景色区域

2024-04-24 21:12:11 发布

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

我正在绘制一个随时间变化的变量,我想用红绿灯样式来表示变量的严重性。在

 |
 |
 |           red
 |
 |
y|              /
 |             /   yellow
 |      ___   /
 |     /   \_/
 |    /           green
 |   /
 |_____________________________
             x

所以对于低y值,背景是绿色的,对于中间值是黄色/琥珀色,对于高值是红色。它看起来有点像一面三条纹的旗帜。在

因为我经常重复这个,而且y刻度可能会改变,所以我不能在绘图上放固定的方框,除非我每次绘图时都计算方框的大小。在

有没有一种方法可以用matplotlib做到这一点?在

我现在的绘图代码:

^{pr2}$

Tags: 绘图时间绘制样式greenred条纹背景
1条回答
网友
1楼 · 发布于 2024-04-24 21:12:11

使用^{}可以很容易地做到这一点。您必须传递要着色的区域的y坐标(这有点手动)

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]  #fake data
y = [1,2,3,4,3,2,9,12]

fig, ax = plt.subplots()

ax.plot(x, y, 'k')
ax.grid()
ax.margins(0) # remove default margins (matplotlib verision 2+)

ax.axhspan(0, 4, facecolor='green', alpha=0.5)
ax.axhspan(4, 9, facecolor='yellow', alpha=0.5)
ax.axhspan(9, 12, facecolor='red', alpha=0.5)

plt.show()

它给出了:

enter image description here

相关问题 更多 >