[英]Removing datapoints outside interval for both axes of a plot
我正在嘗試使用matplotlib繪制一些數據。
import matplotlib.pyplot as plt
x_data = np.arange(0,100)
y_data = np.random.randint(11, size=(100,))
plt.plot(x_data, y_data)
plt.show
當然,這很好。 但是,我想刪除給定時間間隔之外的數據(例如4 <y_data <6)。 對於y_data,這是通過
y_data_2 = [x for x in y_data if 4 <= x <= 6]
但是,由於第一個維度不再相等,因此您將不再能夠繪制y_data_2與x_data。 如果您嘗試
plt.plot(x_data, y_data_2)
您當然會得到一條錯誤消息,指出
ValueError: x and y must have same first dimension, but have shapes (100,) and (35,)
因此,我的問題是雙重的:是否有一種簡單的方法可以刪除x_data中的等效數據點? 另外,有沒有一種方法可以找到要刪除的點的索引?
謝謝。
首先,您可以獲取y_data中y_data_2的索引,然后獲取x_data的子數組x_data_2。 然后,繪制x_data_2,y_data_2。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x_data = np.arange(0,100)
y_data = np.random.randint(11, size=(100,))
y = pd.Series(y_data)
y_data_2 = [x for x in y_data if 4 <= x <= 6]
index = y[y.isin(y_data_2)].index
print(index)
x_data_2 = x_data[index]
plt.plot(x_data, y_data)
plt.scatter(x_data_2, y_data_2)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.