创建条件绘图python

时间:2017-04-03 18:25:54

标签: python matplotlib

我想只绘制小于或等于某个数字的值(比方说15)。 我可以在我的数据框的一列中找到这些值,如果这些值不小于或等于15,我不想绘制它们。

你能帮我找一个解决方案吗?

1 个答案:

答案 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)

enter image description here

<强> 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")

enter image description here

可以看出,高于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")

enter image description here

附录:使用两种不同的条件
通过将它们与&(“和”)或|(“或”)等逻辑运算符组合,可以使用多个条件。 因此,将所有高于15或低于-15的值设置为nan,你可以

df2[(df2.y > 15) | (df2.y < -15)] = np.nan