我尝试使用fill_between来填充绘图的不同区域,但在尝试填充的区域之间出现间隙。
我尝试过使用interpolate=True,但这会导致非矩形形状...
`
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
x = np.arange(0, 4 * np.pi, 0.01)
y = np.sin(x)
ax.plot(x, y, color='black')
threshold = 0.75
ax.axhline(threshold, color='green', lw=2, alpha=0.7)
ax.fill_between(x, 0, 1, where=y > threshold,
facecolor=(0.5,0,0,0.5), ec=None,transform=ax.get_xaxis_transform())
ax.fill_between(x, 0, 1, where=y <= threshold,
facecolor=(0,0.5,0,0.5), ec=None, transform=ax.get_xaxis_transform())
'我附上了一张放大的图截图。
2条答案
按热度按时间w8f9ii691#
您可以执行以下一项或两项操作:
1.使用更精细的x值,例如
x = np.arange(0, 4 * np.pi, 0.0001)
。这将在全视图中删除白色条纹,但如果放大,它们将在特定缩放级别重新出现。1.首先在整个x范围内绘制绿色背景(不带
where
条件),然后在所需部分绘制红色部分。如果是非不透明颜色(如示例中所示),则需要手动重新计算默认白色背景上的半透明颜色,使其成为完全不透明的颜色:zynd9foi2#
我找到了解决这个问题的另一种方法,即使用pcolormesh,其中颜色数组为1xn: