Plotbreiteneinstellungen in ipython notebook

80

Ich habe die folgenden Handlungen:

Tonsignale

Es würde schöner aussehen, wenn sie die gleiche Breite haben. Haben Sie eine Idee, wie es in ipython notebook gemacht wird, wenn ich es benutze %matplotlib inline?

AKTUALISIEREN:

Um beide Zahlen zu generieren, benutze ich folgende Funktionen:

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()
pt12lol
quelle
%matplotlib notebook
Grisaitis

Antworten:

80

Wenn Sie verwenden %pylab inline, können Sie (in einer neuen Zeile) den folgenden Befehl einfügen:

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

Dadurch werden alle Abbildungen in Ihrem Dokument (sofern nicht anders angegeben) auf die Größe eingestellt (10, 6), wobei der erste Eintrag die Breite und der zweite die Höhe ist.

Weitere Informationen finden Sie in diesem SO-Beitrag. https://stackoverflow.com/a/17231361/1419668

Wille
quelle
12
macht einfach figsize(10, 6)den Job und die Zeiten leichter zu merken.
Alleo
67

Wenn Sie sich nicht in einem Ipython-Notizbuch befinden (wie dem OP), können Sie die Größe auch einfach deklarieren, wenn Sie die Abbildung deklarieren:

width = 12
height = 12
plt.figure(figsize=(width, height))
Ramon Martinez
quelle
4
Haben Sie eine Idee, in welchen Einheiten dies gemessen wird?
Martin Thoma
1
Einheiten sind Zoll, aber YMMV (die DPI Ihres Displays entspricht möglicherweise nicht den Annahmen von matplotlib). Dies funktioniert auch nicht in der OP-Umgebung, einem iPython Notebook!
Kochfelder
2
@hobs Welche Version von iPython Notebook verwenden Sie? es funktioniert für mich in Jupyter.
Ramon Martinez
1
Arbeitet für mich in emacs / ein 20161228.741
Ott Toomet
3
@hobs das funktioniert bei mir in ipython. Das Ipython meiner Site ist leicht gehackt, aber ich wäre sehr überrascht, wenn es nicht auch für generisches Ipython funktionieren würde.
Jonathan Mayer
67

So habe ich es gemacht:

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

Sie können Ihre eigenen Größen definieren.

aakinlalu
quelle
4
plt.rcParams["figure.figsize"] =(12,9) auch das funktioniert
Roman Kazakov