[英]How do you plot peaks in a graph in python
您只需要使用導數。 在這里,我采用了幾個漸變來確保我們找到的點在頂部,而不僅僅是a幸:
import math
import matplotlib.pyplot as plt
x_array = []
y_array = []
for num in range(0, 10000):
x = num/100
y = math.sin(x) * (.99 ** x)
x_array.append(x)
y_array.append(y)
x_maximums = []
y_maximums = []
for i in range(2, len(y_array) - 2):
if y_array[i - 2] < y_array[i - 1] and y_array[i - 1] < y_array[i] and y_array[i + 2] < y_array[i + 1] and y_array[i + 1] < y_array[i]:
y_maximums.append(y_array[i])
x_maximums.append(x_array[i])
plt.plot(x_array, y_array)
plt.scatter(x_maximums, y_maximums, color='k')
plt.show()
輸出: 注意對於我的帖子,不需要像我這樣的多余衍生工具。 我之所以將它們包括在內,是因為您的數據集之間的數字差異可能很小,如果您僅與兩個最接近的數字進行比較(實驗數據中的常見數字),這些數字可能會錯誤地將某些數字標記為局部最大值。 也可以采用類似的導數:
if y_array[i - 2] < y_array[i] and y_array[i - 1] < y_array[i] and y_array[i + 2] < y_array[i] and y_array[i + 1] < y_array[i]:
如果這對您更有意義,或者如果您仍然得到怪異的結果,則可能以其他方式!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.