Cài đặt chiều rộng ô trong sổ ghi chép ipython


80

Tôi có những mảnh đất sau:

tín hiệu âm thanh

Nó sẽ đẹp hơn nếu chúng có cùng chiều rộng. Bạn có bất kỳ ý tưởng nào để làm điều đó trong sổ ghi chép ipython khi tôi đang sử dụng %matplotlib inlinekhông?

CẬP NHẬT:

Để tạo cả hai số liệu, tôi đang sử dụng các hàm sau:

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
grisaitis

Câu trả lời:


80

Nếu bạn sử dụng, %pylab inlinebạn có thể (trên một dòng mới) chèn lệnh sau:

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

Điều này sẽ đặt tất cả các số liệu trong tài liệu của bạn (trừ khi được chỉ định khác) có kích thước (10, 6), trong đó mục nhập đầu tiên là chiều rộng và mục nhập thứ hai là chiều cao.

Xem bài SO này để biết thêm chi tiết. https://stackoverflow.com/a/17231361/1419668


12
đơn giản là figsize(10, 6)thực hiện công việc và thời gian dễ nhớ hơn.
Alleo

67

Nếu bạn không sử dụng sổ ghi chép ipython (như OP), bạn cũng có thể chỉ cần khai báo kích thước khi khai báo hình:

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

4
Bạn có bất kỳ ý tưởng nào về đơn vị này được đo không?
Martin Thoma

1
Đơn vị là inch, nhưng YMMV (DPI của màn hình của bạn có thể không khớp với giả định của matplotlib). Ngoài ra, điều này sẽ không hoạt động trong môi trường OP, một Máy tính xách tay iPython!
hobs

3
@hobs Bạn đang chạy phiên bản máy tính xách tay iPython nào? nó đang làm việc cho tôi ở Jupyter.
Ramon Martinez

1
Làm việc cho tôi trong emacs / ein 20161228.741
Ott Toomet

3
@hobs này phù hợp với tôi trong ipython. Ipython của trang web của tôi bị tấn công một chút, nhưng tôi sẽ rất ngạc nhiên nếu nó cũng không hoạt động với ipython chung.
Jonathan Mayer

67

Đây là cách tôi đã làm:

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

Bạn có thể xác định kích thước của riêng bạn.


4
plt.rcParams["figure.figsize"] =(12,9) cũng làm việc này
La Mã Kazakov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.