2013-03-04 17 views
5

Planuję dane szeregów czasowych porównując charakterystyki systemu z wielu węzłów. Chcę wyraźnie oznaczyć linię z określonego węzła bezpośrednio wzdłuż jej linii. Do tej pory udało mi się wprowadzić osobny styl linii dla danego węzła, który nadaje mu charakterystyczną linię i charakterystyczny znacznik stylu w polu legendy.matplotlib/pandy: umieść etykietę linii wzdłuż kreślonych linii na wykresie szeregu czasowego

Próbuję znaleźć sposób na umieszczenie wyróżniającej się etykiety wzdłuż linii, ewentualnie zakrzywienie tekstu wzdłuż linii. Jakikolwiek sposób to osiągnąć?

Odpowiedz

5

Zakrzywienie tekstu wzdłuż linii nie jest łatwe z matplotlib, ale annotate pozwoli Ci łatwo oznaczyć linię tekstem i strzałką.

E.g.

import matplotlib.pyplot as plt 
import numpy as np 

# Generate some data 
x = np.linspace(0, 20, 200) 
y = np.cos(x) + 0.5 * np.sin(3 * x) 

fig, ax = plt.subplots() 
ax.plot(x, y) 

ax.annotate(r'$y = cos(x) + \frac{sin(3x)}{2}$', xy=(x[70], y[70]), 
      xytext=(20, 10), textcoords='offset points', va='center', 
      arrowprops=dict(arrowstyle='->')) 
plt.show() 

enter image description here

+0

Dzięki za pomysł. Byłem świadom adnotacji, ale planowałem użyć jej do wskazania ważnych faz w czasie. Będę teraz grał z adnotacjami, aby osiągnąć cel, o który chodzi w tym poście. Przeszkoda będzie polegać na programowym określeniu punktu w konkretnym wierszu, w którym jest on oddzielony od innych linii. –

Powiązane problemy