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