Hoe verander ik de figuurgrootte met subplots?

Ik kwam dit voorbeeld in de Matplotlib-website. Ik vroeg me af of het mogelijk was om de figuurgrootte te vergroten.

Ik heb geprobeerd met

f.figsize(15,15)

Maar het doet niets.


Antwoord 1, Autoriteit 100%

Als u al het gebruik van het cijferobject hebt:

f.set_figheight(15)
f.set_figwidth(15)

Maar als u de opdracht-.subplots () gebruikt (zoals in de voorbeelden die u laat zien) om een ​​nieuw cijfer te maken, kunt u ook gebruiken:

f, axs = plt.subplots(2,2,figsize=(15,15))

Antwoord 2, Autoriteit 7%

Maak alternatief een figure()Object met behulp van de figsizeArgument en gebruik vervolgens add_subplotom uw subplots toe te voegen. B.g

import matplotlib.pyplot as plt
import numpy as np
f = plt.figure(figsize=(10,3))
ax = f.add_subplot(121)
ax2 = f.add_subplot(122)
x = np.linspace(0,4,1000)
ax.plot(x, np.sin(x))
ax2.plot(x, np.cos(x), 'r:')

Voordelen van deze methode zijn dat de syntaxis dichter bij oproepen van subplot()is in plaats van subplots(). B.v. Subplots lijken niet te ondersteunen met behulp van een GridSpecvoor het besturen van de afstand van de subplots, maar zowel subplot()en add_subplot()do.


Antwoord 3, Autoriteit 2%

In aanvulling op de vorige antwoorden, is hier een optie om de grootte van de figuur en de grootte van de subplots binnen de figuur afzonderlijk in te stellen door middel van gridspec_kw:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#generate random data
x,y=range(100), range(10)
z=np.random.random((len(x),len(y)))
Y=Y=[z[i].sum() for i in range(len(x))]
z=pd.DataFrame(z).unstack().reset_index()
#Plot data
fig, axs = plt.subplots(2,1,figsize=(16,9), gridspec_kw={'height_ratios': [1, 2]})
axs[0].plot(Y)
axs[1].scatter(z['level_1'], z['level_0'],c=z[0])

met dit cijfer als resultaat:


Antwoord 4

Voor het plotten van subplotsin een for loopwat soms handig is:
Voorbeeldcode voor een matplotlib-plot van meerdere subplots van histogrammen uit een multivariate numpy array(2-dimensionaal).

plt.figure(figsize=(16, 8)) 
for i in range(1, 7):
    plt.subplot(2, 3, i)
    plt.title('Histogram of {}'.format(str(i)))
    plt.hist(x[:,i-1], bins=60)

Other episodes