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
Plot width settings in ipython notebook
提问by pt12lol
I've got the following plots:
我有以下情节:


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.
您可以定义自己的尺寸。

