Matplotlib-delplott i forskjellige størrelser

Jeg må legge til to delområder i en figur. Det ene delområdet må være omtrent tre ganger så bredt som det andre (samme høyde). Jeg oppnådde dette ved hjelp av GridSpec og argumentet colspan, men jeg vil gjerne gjøre dette ved hjelp av figure slik at jeg kan lagre til PDF. Jeg kan justere den første figuren ved hjelp av argumentet figsize i konstruktøren, men hvordan endrer jeg størrelsen på den andre figuren?

Du kan bruke gridspec og 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')

Kommentarer (0)

Den enkleste måten er sannsynligvis å bruke subplot2grid, beskrevet i Customizing Location of Subplot Using GridSpec.

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

er lik

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

så bmu's eksempel blir:

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')
Kommentarer (0)

Jeg brukte pyplot's axes-objekt for å justere størrelsene manuelt uten å bruke 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()
Kommentarer (2)