2017-04-03 50 views
-6

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

你能帮我找到解决办法吗?

+0

你到目前为止试过了什么?如果你可以找到这些值,你可以列出它们并绘制该列表。在这种情况下,您还可以更改[轴的极限](http://stackoverflow.com/questions/3777861/setting-y-axis-limit-in-matplotlib)以“隐藏”您不想要的值。 – berna1111

+0

尽管质量很差(@Leonardo请阅读[问]),但我认为这个问题已经足够清楚地回答了。 – ImportanceOfBeingErnest

回答

1

0产生一个最小的例子
(此步骤通常应采取一个谁问的问题,这是你的问题是downvoted常常出现的原因之一)

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 
+0

我想感谢你,你的回答给了我很多帮助。 –

+0

我还有一个问题要做。 我使用这样的: X = A [ '滚动'] X2 = X [X <= 15] plt.plot(一个[ '滚动']) plt.plot(×2) plt.legend (['original','filtered to x2 <= 15']) plt.grid() plt.show() 但我只是意识到我需要绘制x2而不是如果它只有15或更少,我需要如果x2大于或等于-15并且小于或等于15(这是你向我解释的),但是如果我想绘制我的值(如果-15 <= x > = 15),我该怎么做? –

+0

我更新了答案。 – ImportanceOfBeingErnest