2013-03-04 14 views
5

Sto registrando i dati delle serie temporali confrontando le caratteristiche del sistema da più nodi. Voglio etichettare la linea da un nodo particolare esplicitamente lungo la sua linea. Finora sono riuscito a mettere lo stile di linea separato per il nodo particolare, che gli conferisce una linea distintiva e un marcatore di stile distintivo nella casella della legenda.matplotlib/panda: inserisci l'etichetta della linea lungo le linee tracciate nel grafico delle serie temporali

Sto cercando di trovare un modo per mettere un'etichetta distintiva lungo la linea, possibilmente testo che curva lungo la linea. Un modo per riuscirci?

risposta

5

La curvatura del testo lungo la linea non è facile da fare con matplotlib, ma annotate consente di etichettare facilmente la linea con il testo e una freccia.

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

Grazie per l'idea. Ero a conoscenza delle annotazioni ma stavo progettando di usarlo per indicare fasi importanti nel tempo. Ora giocherò con annotate per raggiungere l'obiettivo cercato in questo post. Ostacolo sarà quello di capire a livello programmatico un punto nella linea specifica in cui è separato dalle altre linee. –

Problemi correlati