web-dev-qa-db-fra.com

Paramètres de largeur de tracé dans ipython notebook

J'ai les parcelles suivantes:

sound signals

Ce serait plus joli s'ils avaient la même largeur. Avez-vous une idée de la façon de le faire dans ipython notebook lorsque j'utilise %matplotlib inline?

PDATE:

Pour générer les deux figures, j'utilise les fonctions suivantes:

import numpy as np
import matplotlib.pyplot as plt

def show_plots2d(title, plots, points, xlabel = '', ylabel = ''):
    """
    Shows 2D plot.

    Arguments:
        title : string
            Title of the plot.
        plots : array_like of pairs like array_like and array_like
            List of pairs,
            where first element is x axis and the second is the y axis.
        points : array_like of pairs like integer and integer
            List of pairs,
            where first element is x coordinate
            and the second is the y coordinate.
        xlabel : string
            Label of x axis
        ylabel : string
            Label of y axis
    """
    xv, yv = Zip(*plots)
    y_exclNone = [y[y != np.array(None)] for y in yv]
    y_mins, y_maxs = Zip(*
        [(float(min(y)), float(max(y))) for y in y_exclNone]
    )
    y_min = min(y_mins)
    y_max = max(y_maxs)
    y_amp = y_max - y_min
    plt.figure().suptitle(title)
    plt.axis(
        [xv[0][0], xv[0][-1], y_min - 0.3 * y_amp, y_max + 0.3 * y_amp]
    )
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    for x, y in plots:
        plt.plot(x, y)
    for x, y in points:
        plt.plot(x, y, 'bo')
    plt.show()

def show_plot3d(title, x, y, z, xlabel = '', ylabel = '', zlabel = ''):
    """
    Shows 3D plot.

    Arguments:
        title : string
            Title of the plot.
        x : array_like
            List of x coordinates
        y : array_like
            List of y coordinates
        z : array_like
            List of z coordinates
        xlabel : string
            Label of x axis
        ylabel : string
            Label of y axis
        zlabel : string
            Label of z axis
    """
    plt.figure().suptitle(title)
    plt.pcolormesh(x, y, z)
    plt.axis([x[0], x[-1], y[0], y[-1]])
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    plt.colorbar().set_label(zlabel)
    plt.show()
72
pt12lol

Si vous utilisez %pylab inline, vous pouvez (sur une nouvelle ligne) insérer la commande suivante:

%pylab inline
pylab.rcParams['figure.figsize'] = (10, 6)

Ainsi, tous les chiffres de votre document (sauf indication contraire) seront de la taille (10, 6), où la première entrée est la largeur et la seconde la hauteur.

Voir ce SO post pour plus de détails. https://stackoverflow.com/a/17231361/1419668

78
Will

Si vous n'êtes pas dans un cahier ipython (comme l'OP), vous pouvez simplement déclarer la taille lorsque vous déclarez la figure:

width = 12
height = 12
plt.figure(figsize=(width, height))
63
Ramon Martinez

C'est comme ça que je l'ai fait:

%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (12, 9) # (w, h)

Vous pouvez définir vos propres tailles.

61
aakinlalu