0。制作一个最小的例子
(此步骤通常应由提出问题的人执行;这也是您的问题经常被否决的原因之一)
import numpy as np; np.random.seed(4)
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = 5,3
x = np.linspace(2.1,6.3,num=70)
y = np.cumsum(np.random.normal(size=len(x))*10.)
df = pd.DataFrame({"x":x, "y":y})
plt.plot(df.x,df.y)
plt.show()
现在你有几个选择:
1.限制视图
您可以简单地限制绘图的视图,使其 y 比例仅上升到 15。这是通过
plt.ylim(-30,15)
2。过滤数据框
您可以按条件过滤数据框。这意味着在生成的数据框中,仅存在条件为肉的那些行。
df2 = df[df.y <= 15]
plt.plot(df.x,df.y, label="original")
plt.plot(df2.x,df2.y, label="filtered to y <= 15")
可以看出,15 以上的值不在过滤曲线中。但是,新曲线看起来也是连续的,这可能会令人困惑,具体取决于所需的图形。
3.将所有大于 15 的值设置为 nan
不绘制数据集中的值nan(不是数字)。这可以通过将所有高于 15 的值设置为 nan 来使用。
df2 = df.copy()
df2[df2.y > 15] = np.nan
plt.plot(df2.x,df2.y, label="y > 15 set to nan")
附录:使用两种不同的条件
您可以通过将它们与 & ("and") 或 | ("or") 等逻辑运算符组合使用多个条件。
因此,将所有高于 15 或低于 -15 的值设置为 nan,您会这样做
df2[(df2.y > 15) | (df2.y < -15)] = np.nan