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