kzen.dev
  • Questions
  • Tags
  • Utilisateurs
Notifications
Récompenses
Inscription
Une fois inscrit, vous serez informé des réponses et des commentaires à vos questions.
Connectez-vous
Si vous avez déjà un compte, connectez-vous pour vérifier les nouvelles notifications.
Il y aura des récompenses pour les questions, réponses et commentaires ajoutés.
Détails
Source
Editer
Jason Strimpel
Jason Strimpel
Question

Matplotlib : des sous-points de taille différente

Je dois ajouter deux sous-plots à une figure. L'un d'eux doit être environ trois fois plus large que le second (même hauteur). J'ai réalisé cela en utilisant GridSpec et l'argument colspan mais j'aimerais le faire en utilisant figure pour pouvoir enregistrer au format PDF. Je peux ajuster la première figure en utilisant l'argument figsize dans le constructeur, mais comment puis-je changer la taille du second tracé ?

203 2012-04-30T18:09:02+00:00 3
 Seanny123
Seanny123
Question modifiée 20 décembre 2016 в 9:21
Programmation
python
plot
matplotlib
figure
Cette question a 1 réponse en anglais, pour les lire connectez-vous à votre compte.
 bmu
bmu
2 mai 2012 в 9:53
2012-05-02T09:53:35+00:00
Détails
Source
Editer
#16072001

Vous pouvez utiliser gridspec et figure:

import numpy as np
import matplotlib.pyplot as plt 
from matplotlib import gridspec

# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)

# plot it
fig = plt.figure(figsize=(8, 6)) 
gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1]) 
ax0 = plt.subplot(gs[0])
ax0.plot(x, y)
ax1 = plt.subplot(gs[1])
ax1.plot(y, x)

plt.tight_layout()
plt.savefig('grid_figure.pdf')

![tracé résultant][1]

[1] : http://i.stack.imgur.com/AAnMK.png

 metakermit
metakermit
Réponse modifiée 16 avril 2014 в 9:49
208
0
 endolith
endolith
8 avril 2013 в 4:31
2013-04-08T16:31:59+00:00
Détails
Source
Editer
#16072002

Le moyen le plus simple est probablement d'utiliser subplot2grid, décrit dans [Personnaliser l'emplacement du sous-plot à l'aide de GridSpec][1].

ax = plt.subplot2grid((2, 2), (0, 0))

est égal à

import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 2)
ax = plt.subplot(gs[0, 0])

donc l'exemple de bmu devient:

import numpy as np
import matplotlib.pyplot as plt

# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)

# plot it
fig = plt.figure(figsize=(8, 6))
ax0 = plt.subplot2grid((1, 3), (0, 0), colspan=2)
ax0.plot(x, y)
ax1 = plt.subplot2grid((1, 3), (0, 2))
ax1.plot(y, x)

plt.tight_layout()
plt.savefig('grid_figure.pdf')

[1] : http://matplotlib.org/users/gridspec.html

30
0
Jason Strimpel
Jason Strimpel
1er mai 2012 в 12:17
2012-05-01T12:17:00+00:00
Détails
Source
Editer
#16072000

J'ai utilisé l'objet axes de pyplot'pour ajuster manuellement les tailles sans utiliser GridSpec:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.2)
y = np.sin(x)

# definitions for the axes
left, width = 0.07, 0.65
bottom, height = 0.1, .8
bottom_h = left_h = left+width+0.02

rect_cones = [left, bottom, width, height]
rect_box = [left_h, bottom, 0.17, height]

fig = plt.figure()

cones = plt.axes(rect_cones)
box = plt.axes(rect_box)

cones.plot(x, y)

box.plot(y, x)

plt.show()
27
0
Communautés apparentées 2
Python en français
Python en français
1 423 utilisateurs
Ouvrir telegram
Python 🇨🇵
Python 🇨🇵
117 utilisateurs
Un groupe de Python en français. @Linux_Fr
Ouvrir telegram
Ajouter une question
Catégories
Toutes
Technologie
Culture / Loisirs
Vie / Arts
Science
Professionnel
Entreprises
Utilisateurs
Tous
Nouveau
Populaire
1
Денис Васьков
Enregistré il y a 15 heures
2
Dima Patrushev
Enregistré il y a 2 jours
3
sirojidddin otaboyev
Enregistré il y a 1 semaine
4
Елена Гайдамамакинат
Enregistré il y a 1 semaine
5
Иван Степанюк
Enregistré il y a 1 semaine
DE
ES
FR
ID
JA
KO
RO
RU
TR
ZH
© kzen.dev 2023
Source
stackoverflow.com
sous licence cc by-sa 3.0 avec l'attribution