web-dev-qa-db-fra.com

figsize dans matplotlib ne change pas la taille de la figure?

Comme vous pouvez le constater, le code produit un diagramme en barres qui n'est pas aussi clair et je souhaite agrandir la figure pour que les valeurs soient mieux visibles. Cela ne le fait pas. Quelle est la bonne façon? x est une base de données et x['user'] est l’axe des x du tracé et x['number'] est le y.

import matplotlib.pyplot as plt
%matplotlib inline  
plt.bar(x['user'], x['number'], color="blue")
plt.figure(figsize=(20,10)) 

La ligne avec le fichier plt.figure ne modifie pas les dimensions initiales.

8
user10341548

Une option (comme mentionné par @tda), et probablement la meilleure méthode, consiste à mettre le plt.figure Avant le plt.bar:

import matplotlib.pyplot as plt
%matplotlib inline  

plt.figure(figsize=(20,10)) 
plt.bar(x['user'], x['number'], color="blue")

Une autre option, si vous souhaitez définir la taille de la figure après avoir créé celle-ci, consiste à utiliser fig.set_size_inches (remarque que j'ai utilisée plt.gcf) ici pour obtenir le chiffre actuel):

import matplotlib.pyplot as plt
%matplotlib inline  

plt.bar(x['user'], x['number'], color="blue")
plt.gcf().set_size_inches(20, 10)

Il est possible de faire tout cela en une seule ligne, bien que ce ne soit pas le code le plus propre. Vous devez d’abord créer la figure, puis obtenir l’axe actuel ( fig.gca ), puis tracer le diagramme en barres dessus:

import matplotlib.pyplot as plt
%matplotlib inline  

plt.figure(figsize=(20, 10)).gca().bar(x['user'], x['number'], color="blue")

Enfin, je noterai qu’il est souvent préférable d’utiliser l’approche matplotlib orientée objet, qui consiste à enregistrer une référence à la figure et aux axes actuels et à appeler directement toutes les fonctions de traçage. Cela peut ajouter plus de lignes de code, mais il s'agit généralement d'un code plus clair (et vous pouvez éviter d'utiliser des éléments tels que gcf() et gca()). Par exemple:

import matplotlib.pyplot as plt
%matplotlib inline 

fig = plt.figure(figsize=(20, 10)
ax = fig.add_subplot(111)
ax.bar(x['user'], x['number'], color="blue")
15
tmdavison

Essayez de définir la taille de la figure avant d’affecter ce qu’il faut tracer, comme ci-dessous:

import matplotlib.pyplot as plt
%matplotlib inline  

plt.figure(figsize=(20,10)) 
plt.bar(x['user'], x['number'], color="blue")
1
tda