簡體   English   中英

如何在python的圖形中繪制峰

[英]How do you plot peaks in a graph in python

我正在嘗試將圖形的峰添加到數組中並將其繪制在我的圖中。 這是我的代碼:

import matplotlib.pyplot as plt
import numpy as np


t,x,y = np.loadtxt(r"C:\Users\haako\Documents\NTNU\Fysikk\Python\film2.txt", delimiter='    ', unpack=True)

plt.plot(t,x)
plt.xlabel("t-value")
plt.ylabel("x-value")
plt.show()

圖的圖片

您只需要使用導數。 在這里,我采用了幾個漸變來確保我們找到的點在頂部,而不僅僅是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM