498

我在 Matplotlib 网站上遇到了这个例子。我想知道是否可以增加图形大小。

我试过了

f.figsize(15,15)

但它什么也没做。

4

6 回答 6

918

如果您已经拥有图形对象,请使用:

f.set_figheight(15)
f.set_figwidth(15)

但是,如果您使用 .subplots() 命令(如您展示的示例中)创建一个新图形,您也可以使用:

f, axs = plt.subplots(2,2,figsize=(15,15))
于 2013-02-08T10:48:03.277 回答
64

或者,figure()使用参数创建一个对象figsize,然后使用它add_subplot来添加您的子图。例如

import matplotlib.pyplot as plt
import numpy as np

f = plt.figure(figsize=(10,3))
ax = f.add_subplot(121)
ax2 = f.add_subplot(122)
x = np.linspace(0,4,1000)
ax.plot(x, np.sin(x))
ax2.plot(x, np.cos(x), 'r:')

简单示例

这种方法的好处是语法更接近调用 ofsubplot()而不是subplots(). 例如 subplots 似乎不支持使用 aGridSpec来控制 subplots 的间距,但两者都subplot()可以add_subplot()

于 2018-03-04T21:01:47.233 回答
44

除了前面的答案之外,这里还有一个选项可以通过以下方式单独设置图形的大小和图形内的子图的大小gridspec_kw

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

#generate random data
x,y=range(100), range(10)
z=np.random.random((len(x),len(y)))
Y=[z[i].sum() for i in range(len(x))]
z=pd.DataFrame(z).unstack().reset_index()

#Plot data
fig, axs = plt.subplots(2,1,figsize=(16,9), gridspec_kw={'height_ratios': [1, 2]})
axs[0].plot(Y)
axs[1].scatter(z['level_1'], z['level_0'],c=z[0])

结果是这个数字: 在此处输入图像描述

于 2021-03-11T06:56:51.017 回答
5

您可以使用plt.figure(figsize = (16,8))更改单个图和最多两个子图的图形大小。(figsize 中的参数可以修改图形大小)

要更改更多子图的图形大小,您可以plt.subplots(2,2,figsize=(10,10))在创建子图时使用。

于 2021-10-07T06:56:19.297 回答
1

对于有时有用的绘图:用于subplots从(二维)绘制直方图的多个子图的示例代码。for loopmatplotlibmultivariate numpy array

plt.figure(figsize=(16, 8)) 
for i in range(1, 7):
    plt.subplot(2, 3, i)
    plt.title('Histogram of {}'.format(str(i)))
    plt.hist(x[:,i-1], bins=60)
于 2021-04-04T14:17:11.167 回答
0
   from matplotlib import pyplot as plt
   lis=[img,gaussian_img,gaussian_img_8bit]
   f,axs=plt.subplots(3,1,figsize=(25,25)) #ROW,COLUMN
   axs[0].imshow(lis[0])
   axs[1].imshow(lis[1])
   axs[2].imshow(lis[2])
于 2022-02-26T16:03:12.603 回答