Нахождение координаты х для максимального значения у - PullRequest
2 голосов
/ 03 марта 2020

У меня есть функция, которая разделена на 3. (0

Мне нужно добавить обозначение на графике для максимальное значение независимо от того, где х находится на (0 <х <L2). У меня есть: </p>

c1 = np.arange(0,L1+0.1, 0.1) 
c2 = np.arange(L1,a+0.1, 0.1)
c3 = np.arange(a,L+0.1, 0.1)


y1 = -q*c1
y2 = -q*c2 + RAV
y3 = -q*c3 + RAV - P
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

ax1.fill_between(c1, y1)
ax1.fill_between(c2, y2)
ax1.fill_between(c3, y3)
ax1.set_title('S curve')

Mmax1=np.max(y1)
Mmax2=np.max(y2)
Mmax3=np.max(y3)
Mmax= round(max(Mmax1,Mmax2,Mmax3), 2)

Теперь я хочу найти координату x значения y Mmax, но я не знаю, как использовать что-то вроде x [np.argmax (Mmax)], где x = a.any (c1, c2, c3).

Мне нужна координата x, чтобы я могла построить ее там, где встречается значение

ax2.annotate(text2,
                 xy=(max_x, Mmax), xycoords='data',
                 xytext=(0, 30), textcoords='offset points',
                 arrowprops=dict(arrowstyle="->"))

Как я могу это исправить? Спасибо!

1 Ответ

0 голосов
/ 04 марта 2020

Здесь я хотел бы проиллюстрировать, что может быть полезно для вас, так как у меня нет полного кода для создания вашей функции желаний, я определил 3 простые функции со следующим описанием: к out_arr=np.maximum.reduce([y1,y2,y3]) у нас будет максимум в каждом x и по result = np.where(out_arr == np.amax(out_arr)) мы узнаем, какой индекс имеет максимальное значение. тогда максимальная пинта будет point=[Max_X,out_arr[Max_X]]

import matplotlib.pyplot as plt
import numpy as np

x= np.arange(0., 6., 1)
y1=x
y2=x**2
y3=x**3


out_arr=np.maximum.reduce([y1,y2,y3])
result = np.where(out_arr == np.amax(out_arr))
Max_X=result[0]
print(Max_X)

point=[Max_X,out_arr[Max_X]]

plt.plot(Max_X,out_arr[Max_X],'ro') 
# red dashes, blue squares and green triangles
plt.plot(x, y1, 'r--', x, y2, 'bs', x, y3, 'g^')
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...