Я думаю, что когда вы используете Pandas для построения графика, он будет искать индексы внутри себя, а не для значений.
Итак, в вашем случае, когда вы делаете:
point.plot(p1,x)
Панды будут искать индекс 1993 в направлении х, т. Е. Во всех столбцах.Другими словами, вы должны иметь столбцы 1993 года.
Я пытался воспроизвести вашу проблему следующим образом:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=('rok', 'kroliki', 'lisy', 'marchewki'))
data = df[1:]
data=data.astype(float)
x = int(data['kroliki'].max())
y = int(data['lisy'].max())
z = int(data['marchewki'].max())
p = data['rok'].where(data['kroliki'] == x)
q = data['rok'].where(data['lisy'] == y)
r = data['rok'].where(data['marchewki'] == z)
p1 = int(p[p.notnull()])
q1 = int(q[q.notnull()])
r1 = int(r[r.notnull()])
point = pd.DataFrame({'x':[p1],'y':[q1],'z':[r1]})
point.plot((p1,x),(q1,y),(r1,z))
Я получаю следующую ошибку:
>>> AttributeError: 'tuple' object has no attribute 'lower'
Икогда я запускаю каждую точку отдельно:
>>>> IndexError: index 85 is out of bounds for axis 0 with size 3
Чтобы решить ее:
import matplotlib.pyplot as plt
plt.plot((point.x, point.y, point.z), (x,y,z),'ko')
И я получил следующий результат:

Надеюсь, это поможет.