ipython notebook 中的绘图宽度设置

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/29589119/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 04:45:57  来源:igfitidea点击:

Plot width settings in ipython notebook

pythonmatplotlibipythonipython-notebook

提问by pt12lol

I've got the following plots:

我有以下情节:

sound signals

声音信号

It would look nicer if they have the same width. Do you have any idea how to do it in ipython notebook when I am using %matplotlib inline?

如果它们具有相同的宽度会更好看。当我使用时,你知道如何在 ipython notebook 中做到这一点%matplotlib inline吗?

UPDATE:

更新:

To generate both figures I am using the following functions:

为了生成这两个数字,我使用了以下函数:

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

回答by Will

If you use %pylab inlineyou can (on a new line) insert the following command:

如果您使用,%pylab inline您可以(在新行上)插入以下命令:

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

This will set all figures in your document (unless otherwise specified) to be of the size (10, 6), where the first entry is the width and the second is the height.

这会将文档中的所有图形(除非另有说明)设置为 size (10, 6),其中第一个条目是宽度,第二个条目是高度。

See this SO post for more details. https://stackoverflow.com/a/17231361/1419668

有关更多详细信息,请参阅此 SO 帖子。https://stackoverflow.com/a/17231361/1419668

回答by Ramon Martinez

If you're not in an ipython notebook (like the OP), you can also just declare the size when you declare the figure:

如果您不在 ipython 笔记本中(如 OP),您也可以在声明图形时声明大小:

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

回答by aakinlalu

This is way I did it:

我是这样做的:

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

You can define your own sizes.

您可以定义自己的尺​​寸。