J'ai un tracé simple suivant, et je voudrais afficher l'axe d'origine (x, y). J'ai déjà une grille, mais j'ai besoin que l'axe x, y soit accentué.
voici mon code:
x = linspace(0.2,10,100)
plot(x, 1/x)
plot(x, log(x))
axis('equal')
grid()
J'ai vu cette question. La réponse acceptée suggère d'utiliser "Axe spine" et juste des liens vers un exemple. L'exemple est cependant trop compliqué, utilisant des sous-tracés. Je n'arrive pas à comprendre comment utiliser "Axis spine" dans mon exemple simple.
Utiliser subplots
n'est pas trop compliqué, les épines pourraient l'être.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')
ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')
Et je reçois:
(vous ne pouvez pas voir l'axe vertical car la limite x inférieure est zéro.)
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')
# set the x-spine (see below for more info on `set_position`)
ax.spines['left'].set_position('zero')
# turn off the right spine/ticks
ax.spines['right'].set_color('none')
ax.yaxis.tick_left()
# set the y-spine
ax.spines['bottom'].set_position('zero')
# turn off the top spine/ticks
ax.spines['top'].set_color('none')
ax.xaxis.tick_bottom()
seaborn
(mon préféré)import numpy as np
import matplotlib.pyplot as plt
import seaborn
seaborn.set(style='ticks')
x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')
seaborn.despine(ax=ax, offset=0) # the important part here
set_position
D'une colonne vertébraleVoici les documents pour une méthode set_position
D'épines :
La position de la colonne vertébrale est spécifiée par un 2 Tuple de (type de position, montant). Les types de postes sont:
"vers l'extérieur": placez la colonne vertébrale hors de la zone de données par le nombre de points spécifié. (Les valeurs négatives spécifient le placement du
colonne vertébrale vers l'intérieur.)'axes': placez la colonne vertébrale à la coordonnée des axes spécifiée (de 0,0 à 1,0).
'données': placez la colonne vertébrale à la coordonnée de données spécifiée.
De plus, les notations abrégées définissent des positions spéciales:
- 'centre' -> ('axes', 0,5)
- "zéro" -> ("données", 0,0)
Vous pouvez donc placer, par exemple, la colonne vertébrale gauche n'importe où avec:
ax.spines['left'].set_position((system, poisition))
où system
est 'outward', 'axes' ou 'data' et position
à la place dans ce système de coordonnées.