屏蔽以限制 Matplotlib 中的值

Masking to limit the values in Matplotlib

我想根据 Y 值限制 X 轴,例如 y <= 0 or y > 100 在使用掩码绘制图形时,如下所示。

然而,它并没有像下图那样很好地工作。你能给我一些关于代码中问题出在哪里的建议吗?

实际上,如果我可以为 'y < 0' 绘制 x 的范围,那么掩码等方法并不重要。

我使用 pandas 使用 CSV 数据帧值,并使用 df.ffill()

将缺失值视为先前值
        df = pd.read_csv(file.csv)
        df1 = df.ffill()

        x = np.array(df1['A'])
        y = np.array(df1['B'])
        z = np.array(df1['C'])

        x_for_ax1 = np.ma.masked_where((y <= 0) | (y > 100), x)

        fig, (ax2, ax1) = plt.subplots(ncols=1, nrows=2)
        ax1.set_xlabel('X Axis')
        ax1.set_ylabel('Y Axis')
        ax2.set_ylabel('Z Axis')

        ax1.set_ylim([-10, 40])
        ax2.set_ylim([-5, 5])
        ax1.set_xlim([x_for_ax1.min(), x_for_ax1.max()])
        ax2.set_xlim([x_for_ax1.min(), x_for_ax1.max()])

        ax1.plot(x, y, color='k', linewidth=1)
        ax2.plot(x, z, color='k', linewidth=1)

        plt.show()

不是真正的答案,只是试图重现您的问题:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(75, 145)
y = (np.sin((x/5)) + 1) * 10
y[:20] = 0
z = np.random.random(x.shape)
z[:20] = 0

x_for_ax1 = np.ma.masked_where((y <= 0) | (y > 100), x)

fig, (ax2, ax1) = plt.subplots(ncols=1, nrows=2)
ax1.set_ylim([-10, 40])
ax2.set_ylim([-5, 5])
ax1.set_xlim([x_for_ax1.min(), x_for_ax1.max()])  # Comment out 
ax2.set_xlim([x_for_ax1.min(), x_for_ax1.max()])  # for left image

ax1.plot(x, y, color='k', linewidth=1)
ax2.plot(x, z, color='k', linewidth=1)

如果我 运行 这段代码和一些示例数据,我会得到正确的数字。 在左图中,我没有设置 x 限制:

能不能提供一下y,说不定里面还有NaN's呢?