2015-09-07 3 views
3

J'ai besoin de tracer des données de séries chronologiques. Voici l'exemple de code:Comment déplacer un graphique le long de l'axe des x?

ax2 = pyplot.subplot(212) 
true_targets = pyplot.plot(test_y[:, 0, :]) 
guessed_targets = pyplot.plot(test_y_hat[:, 0, :], linestyle='--') 

Et il produit le graphique suivant:

plot as I have it now

Je veux changer le graphique à droite le long de l'axe x (début de 1 au lieu de 0) .

Répondre

8

il suffit d'utiliser plot avec un vecteur qui spécifie les valeurs de x:

plot(x_values, y_values, linestyles etc) 

au lieu de simplement

plot(y_values, linestyles etc) 

Bien sûr, x_values et y_values doivent avoir la même longueur. Vous pouvez facilement faire en sorte que en faisant quelque chose comme

plot(range(1,1+len(y_values)), y_values, linestyles etc) 

je me trouve généralement souvent dans une situation où les entiers ne coupent pas comme coordonnées x, donc j'utiliser souvent numpy (import numpy) et faire

x_values = numpy.linspace(lower, upper, n_points) 

et n_points est généralement juste len(y_values).

1

Peut-être que je suis mal compris le problème, mais si vous voulez juste votre xaxis pour commencer à 1 au lieu de 0 (sans changer vos valeurs), vous pouvez simplement définir la limite x sur vos axes:

ax2.set_xlim(1,len(test_y_hat)) 

Vous pouvez avoir une certaine logique conditionnelle pour définir la limite supérieure sur l'axe x au lieu d'obtenir la longueur du vecteur comme je l'ai fait ci-dessus