Как бы я присвоил маркеры разных символов каждому из максимальных значений, найденных на каждой кривой? То есть 4 разных маркера, показывающих максимальное значение на каждой кривой.
вот моя попытка
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
df = pd.DataFrame(np.random.randint(0,1000,size=(100, 4)), columns=list('ABCD'))
maxValues=df.max()
m=['o', '.', ',', 'x',]
df.plot()
plt.plot(maxValues, marker=m)
В моем реальном df количество столбцов будет варьироваться.
Вы можете сделать это таким образом. Обратите внимание, что я использовал V
вместо ,
, поскольку запятая (пиксель) не отображалась четко.
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
df = pd.DataFrame(np.random.randint(0,1000,size=(100, 4)), columns=list('ABCD'))
df.plot(figsize=(20,5))
mrk = pd.DataFrame({'A': [df[['A']].idxmax()[0], df['A'].max(), 'o'],
'B': [df[['B']].idxmax()[0], df['B'].max(), '.'],
'C': [df[['C']].idxmax()[0], df['C'].max(), 'v'],
'D': [df[['D']].idxmax()[0], df['D'].max(), 'x']})
for col in range(len(mrk.columns)):
plt.plot(mrk.iloc[0,col], mrk.iloc[1, col], marker=mrk.iloc[2, col], markersize=20)
Я создал фрейм данных mrk
вручную, так как он был небольшим, но вы можете использовать циклы для просмотра различных столбцов в ваших реальных данных. График выглядит следующим образом. Отрегулируйте размер маркера, чтобы увеличить/уменьшить размер маркеров.
Именно то, что мне нужно. Спасибо