2017-04-03 46 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