2017-10-10 3 views
1

J'essaie de tracer un tracé avec Matplotlib, mais je n'arrive pas à régler la distance entre deux axes simultanément. J'ai écrit un code très simple comme celui by ubuntu:Ajustement simultané de la distance entre les intervalles de l'axe x et de l'axe y

import numpy as np 
import matplotlib.pyplot as plt 
x = [0,5,9,10,15] 
y = [0,1,2,3,4] 
plt.plot(x,y) 
plt.xticks(np.arange(min(x), max(x)+1, 1.0)) 
plt.yticks(np.arange(min(y), max(y)+1, 1.0)) 
plt.show() 

Je suis arrivé ce plot. Je me demande s'il existe un moyen de programmer la distance entre les intervalles dans les axes y et x simultanément. J'ai besoin d'ajuster la distance entre les xticks et les yticks simultanément en fonction de leur distance d'intervalle et non de l'axe seul. Ici, j'ai besoin de changer le premier intrigue à un nouveau complot comme celui-ci one. Bien que dans la première parcelle, la distance entre les xticks et les yticks soit de 1.0, mais nous pouvons voir que la distance est plus longue dans l'axe y mais plus courte dans l'axe x. J'ai besoin des distances des axes y et x pour être semblables les uns aux autres. Par exemple, si les intervalles entre xticks sont de 1,0 et yticks de 2,0, l'intervalle entre les points yticks est doublé par rapport aux xticks. Quelqu'un at-il une solution à ce problème?

+0

https://matplotlib.org/faq/howto_faq.html#make-the-aspect-ratio-for-plots- égal – tom

Répondre

2

Vous pouvez remplacer le format de l'axe à l'aide de la méthode set_aspect. Dans votre cas, vous voulez que le rapport d'aspect à 1.

x = [0,5,9,10,15] 
y = [0,1,2,3,4] 
plt.plot(x,y) 
plt.xticks(np.arange(min(x), max(x)+1, 1.0)) 
plt.yticks(np.arange(min(y), max(y)+1, 1.0)) 
ax = plt.gca() # gets the active axis 
ax.set_aspect(1) 
plt.show() 

enter image description here

+0

Ça marche très bien, merci! – sara