我想只绘制小于或等于某个数字的值(比方说15)。 我可以在我的数据框的一列中找到这些值,如果这些值不小于或等于15,我不想绘制它们。
你能帮我找一个解决方案吗?
答案 0 :(得分:1)
<强> 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
(非数字)的值。通过将所有值设置为15到nan以上,可以使用此方法。
df2 = df.copy()
df2[df2.y > 15] = np.nan
plt.plot(df2.x,df2.y, label="y > 15 set to nan")
附录:使用两种不同的条件
通过将它们与&
(“和”)或|
(“或”)等逻辑运算符组合,可以使用多个条件。
因此,将所有高于15或低于-15的值设置为nan,你可以
df2[(df2.y > 15) | (df2.y < -15)] = np.nan