首页 > 解决方案 > Matplotlib 在绘图和水平线之间填充

问题描述

对不起,但我不能发布我的真实数据或情节..所以我在 MS Paint 中制作了图形情节。

所以我有我的情节 - 橙色线,作为一组 X 和 Y 值给出plt.plot(data_x, data_y)。然后我以这种方式添加了水平线 - 蓝线:plt.axvline(x=10)。现在我想在这条线和我的绘图之间填充颜色空间(最终,当值低于水平线时使用一种颜色,当它们高于水平线时使用第二种颜色)。

我尝试了plt.fill并且虽然plt.fill_betweenplt.axhspan我收到了维度问题或元素与序列的错误。

是否有捷径可寻?

在此处输入图像描述

标签: pythonmatplotlibplot

解决方案


是的,有一个用于执行此操作的where参数:ax.fill_between

import matplotlib.pyplot as plt
import numpy as np

# make data
x = np.linspace(0, np.pi * 2, 300)
y = np.sin(x)

# init figure
fig, ax = plt.subplots()

# plot sin and line
ax.plot(x, y, color='orange')
ax.axhline(0)

# fill between hline and y, but use (y > 0) and (y < 0)
# to create boolean masks determining where to fill
ax.fill_between(x, y, where=(y > 0), color='orange', alpha=.3)
ax.fill_between(x, y, where=(y < 0), color='blue', alpha=.3)

在此处输入图像描述


推荐阅读