Bonjour à tous,
j'apprends (entre autres) à utiliser Matplotlib via le livre "Python for Data Analysis".

A un moment du livre, il est indiqué qu'on peut définir une grande partie des options de tracé d'un plot via un dictionnaire.

Par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
from matplotlib import pyplot as plt
 
data = np.random.randn(100).cumsum()
 
 
props={
       'title':'My awesome plot',
       'xlabel':'Random walk number',
       'ylabel':'Total walk',
       'XTicks':[0,25,50,75,100]}
       'XTicklabels':['un', 'deux', 'trois', 'quatre', 'cinq']}
 
hfig, ax = plt.subplots()
plt.plot(data, 'k--')
ax.set(**props)
C'est super car tout est défini dans le dictionnaire props.
Néanmoins, je bloque pour ajouter l'option "rotation=45' dans XTickslabels

Quelque chose qui se fait naturellement par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ax.set_xticklabels(['un','deux','trois','quatre', 'cinq'], rotation=30, fontsize='small')
J'ai essayé naïvement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
xt_props={
    'labels':['un', 'deux', 'trois', 'quatre', 'cinq'],
    'rotation':45}
 
props={
       'title':'My awesome plot',
       'xlabel':'Random walk number',
       'ylabel':'Total walk',
       'XTicks':[0,25,50,75,100]}
       'XTicklabels':xt_props}
 
ax.set(**props)
Ca m'a répondu :
ValueError: The number of FixedLocator locations (5), usually from a call to set_ticks, does not match the number of ticklabels (2).

Alors j'y arrive bien en deux passes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
xt_props={
    'labels':['un', 'deux', 'trois', 'quatre', 'cinq'],
    'rotation':45}
 
props={
       'title':'My awesome plot',
       'xlabel':'Random walk number',
       'ylabel':'Total walk',
       'XTicks':[0,25,50,75,100]}
 
ax.set(**props)
ax.set_xticklabels(**xt_props)
Mais je me demandais si quelqu'un de plus expérimenté que moi y arriverait en une seule passe ?

Merci par avance

Donut