Как вы строите пики на графике в Python?

В XSL существует несколько правил шаблона , один из которых:


  

Он выводит текст.

0
задан HaakonFlaar 18 March 2019 в 17:09
поделиться

1 ответ

Вы просто берете производную. Здесь я взял несколько градиентов, чтобы убедиться, что точка, которую мы находим, находится сверху, а не просто случайность:

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()

Выходы: Plot with peaks shown ПРИМЕЧАНИЕ Излишние производные, которые я взял, не нужны для моего поста. Я включил их, потому что возможно, что ваш набор данных имеет небольшие различия между числами, которые неправильно помечают некоторые из них как локальный максимум, если вы сравниваете только два ближайших числа (Общее в экспериментальных данных). В качестве альтернативы можно взять производные, например:

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]:

Если это имеет для вас больше смысла, или, возможно, даже каким-то другим образом, если вы все еще получаете странные результаты!

0
ответ дан Reedinationer 18 March 2019 в 17:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: