2016-07-30 1 views
1

Я хочу, чтобы построить что-то с помощью plot(x,y) и быть в состоянии видеть на графике индекса стоимости в xПоказаны значения как и индекс в х-тиков в участке

Например.

x = [10,30,100,120] 
y = [16,17,19,3] 
plot(x,y) 

покажет

enter image description here

глядя на сюжет это трудно понять, в каждой точке, что был первоначальный индекс. Например, я хочу знать, глядя на точку (100,19), что это индекс 2, начиная с x[2]=100 и y[2]=19. Как это сделать в matplotlib. Я смотрел на функцию twiny(), но это, кажется, просто добавляет другие оси, не учитывая расстояние между точками в x.

ответ

1

Вот мое решение:

import matplotlib.pyplot as plt 
x = [10,30,100,120] 
y = [16,17,19,3] 
plt.plot(x,y); 
for i, (a, b) in enumerate(zip(x, y)): 
    plt.annotate(str(i), xy=(a, b), textcoords="offset points", xytext=(0, 12), 
       horizontalalignment='center', verticalalignment='center') 
plt.xlim(0, 130) 
plt.ylim(0, 22) 

Что он делает: он перебирает на ваших y и x массивов хранения индекса в переменной i и соответствующие значения x и y в переменных a и b. Затем он аннотирует индекс i в координатах (a, b), смещая текст на 12 пикселей по оси Y, чтобы избежать аннотации, покрывающей кривую.

Результат:

enter image description here

+0

Для очень большой граф, т.е. 1000s точек может работать медленно в противном случае это хорошо. Благодаря! – tal

Смежные вопросы