x = [0.0000000,0.0082707,0.0132000, 0.0255597, 0.0503554, 0.0751941, 0.1000570,
0.1498328, 0.1996558, 0.2495240, 0.2994312, 0.3993490, 0.4993711, 0.5994664,
0.6996058, 0.7997553, 0.8998927, 0.9499514, 1.0000000, 0.0000000, 0.006114,
0.0062188, 0.0087532, 0.0138088, 0.0264052, 0.0515127, 0.0765762, 0.1016176,
0.1516652, 0.2016828, 0.2516733, 0.3016387, 0.4015163, 0.5013438, 0.6011363,
0.7008976, 0.8006328, 0.9003380, 0.9501740, 1.0000000]
y = [0.0000000, 0.0233088, 0.0298517, 0.0425630, 0.0603942, 0.0739301, 0.0850687,
0.1023515, 0.1149395, 0.1230325, 0.1272298, 0.1253360, 0.1130538, 0.0934796,
0.0695104, 0.0445423, 0.0207728, 0.0098870, 0.0000000, 0.0000000, -.0208973,
-.0210669, -.0247377, -.0307807, -.0416431, -.0548774, -.0637165, -.0703581,
-.0801452, -.0869356, -.0910290, -.0926252, -.0905235, -.0834273, -.0728351,
-.0591463, -.0428603, -.0235778, -.0122883, 0.0000000]
plt.plot(x,y)
這是我從網站上抓取的資料點。如果我繪制此圖,則有一條從 (0,0) 到 (1,0) 的線是我不想要的。我已經嘗試手動洗掉點并查看我需要洗掉哪些點,但我似乎無法讓它作業。該資料點中有兩對相同的點。如何洗掉從 (0,0) 到 (1,0) 的線,并且可以通過 usingif
陳述句將其自動化?
uj5u.com熱心網友回復:
如果您仔細查看您的資料,似乎存在不連續性。你的 x 值開始上升,然后回到 0,然后再次上升。這種不連續性正在創建困擾您的水平線。您可以遍歷x
and y
,檢測何時x
下降而不是增加的值,找到該索引并將兩個串列分開。但是,使用np.diff
也可以幫助解決這個問題。在這種特定情況下,只有一滴,所以你只有一個負值diff
。這是我的代碼和我得到的圖表。它可能不會推廣到任何數量的不連續性,但它可以解決您的問題。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
x = [0.0000000,0.0082707,0.0132000, 0.0255597, 0.0503554, 0.0751941, 0.1000570,
0.1498328, 0.1996558, 0.2495240, 0.2994312, 0.3993490, 0.4993711, 0.5994664,
0.6996058, 0.7997553, 0.8998927, 0.9499514, 1.0000000, 0.0000000, 0.006114,
0.0062188, 0.0087532, 0.0138088, 0.0264052, 0.0515127, 0.0765762, 0.1016176,
0.1516652, 0.2016828, 0.2516733, 0.3016387, 0.4015163, 0.5013438, 0.6011363,
0.7008976, 0.8006328, 0.9003380, 0.9501740, 1.0000000]
y = [0.0000000, 0.0233088, 0.0298517, 0.0425630, 0.0603942, 0.0739301, 0.0850687,
0.1023515, 0.1149395, 0.1230325, 0.1272298, 0.1253360, 0.1130538, 0.0934796,
0.0695104, 0.0445423, 0.0207728, 0.0098870, 0.0000000, 0.0000000, -.0208973,
-.0210669, -.0247377, -.0307807, -.0416431, -.0548774, -.0637165, -.0703581,
-.0801452, -.0869356, -.0910290, -.0926252, -.0905235, -.0834273, -.0728351,
-.0591463, -.0428603, -.0235778, -.0122883, 0.0000000]
discont = np.diff(x).argmin()
x1 = x[:discont 1]
y1 = y[:discont 1]
x2 = x[discont 1:]
y2 = y[discont 1:]
plt.plot(x1, y1)
plt.plot(x2, y2)
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/495111.html
標籤:matplotlib 自动化