Налаштування ширини ділянки в блокноті ipython


81

У мене є такі сюжети:

звукові сигнали

Було б приємніше виглядати, якби вони мали однакову ширину. Чи маєте ви уявлення про те, як це зробити в блокноті ipython, коли я використовую %matplotlib inline?

ОНОВЛЕННЯ:

Для генерації обох фігур я використовую такі функції:

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

%matplotlib notebook
грисайтис

Відповіді:


80

Якщо ви використовуєте, %pylab inlineви можете (у новому рядку) вставити таку команду:

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

Це встановить розмір усіх цифр у вашому документі (якщо не вказано інше) (10, 6), де перший запис - це ширина, а другий - висота.

Детальніше див. У цій публікації SO. https://stackoverflow.com/a/17231361/1419668


12
просто figsize(10, 6)робить цю роботу і в рази легше запам'ятовується.
Аллео

68

Це я зробив так:

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

Ви можете визначити власні розміри.


4
plt.rcParams["figure.figsize"] =(12,9) також це працює
Роман Казаков

67

Якщо ви не в зошиті ipython (наприклад, OP), ви також можете просто оголосити розмір, коли оголошуєте рисунок:

width = 12
height = 12
plt.figure(figsize=(width, height))

4
Ви уявляєте, в яких одиницях це вимірюється?
Мартін Тома

1
Одиниці вимірювання - дюйми, але YMMV (DPI вашого дисплея може не відповідати припущенням matplotlib). Крім того, це не буде працювати в середовищі OP, блокнот iPython!
конфорки

3
@hobs, яку версію ноутбука iPython ви використовуєте? це працює для мене в Юпітері.
Рамон Мартінес

1
Працює для мене в emacs / ein 20161228.741
Ott

3
@hobs це працює для мене в ipython. Ipython мого сайту трохи зламаний, але я був би дуже здивований, якби це не працювало і для загального ipython.
Джонатан Майер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.