python plot matplotlib figure

python - matplotlib title



Subtramas de Matplotlib de diferentes tamaƱos (4)

Otra forma es usar la función de subplots y pasar la proporción de ancho con gridspec_kw :

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 f, (a0, a1) = plt.subplots(1,2, gridspec_kw = {''width_ratios'':[3, 1]}) a0.plot(x,y) a1.plot(y,x) f.tight_layout() f.savefig(''grid_figure.pdf'')

Necesito agregar dos subtramas a una figura. Una subtrama necesita ser aproximadamente tres veces más ancha que la segunda (misma altura). Lo GridSpec usando GridSpec y el argumento colspan pero me gustaría hacer esto usando la figure para poder guardar en PDF. Puedo ajustar la primera figura usando el argumento de figsize en el constructor, pero ¿cómo puedo cambiar el tamaño del segundo gráfico?


Probablemente la forma más simple es usar subplot2grid , descrito en gridspec .

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

es igual a

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

entonces el ejemplo de bmu se convierte en:

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'')


Puedes usar gridspec y 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'')


pyplot el objeto de axes pyplot para ajustar manualmente los tamaños sin usar 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()