如何使用子图更改图形大小?

时间:2013-02-08 10:41:57

标签: python matplotlib

我在Matplotlib网站上遇到this example。我想知道是否有可能增加数字。

我试过

f.figsize(15,15)

但它什么也没做。

4 个答案:

答案 0 :(得分:308)

如果您已使用图形对象:

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

但是如果你使用.subplots()命令(如你所示的例子中那样)来创建一个新的数字,你也可以使用:

f, axs = plt.subplots(2,2,figsize=(15,15))

答案 1 :(得分:15)

除了前面的答案之外,这里还有一个选项可以通过 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=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])

这个数字作为结果: enter image description here

答案 2 :(得分:11)

或者,使用figure()参数创建figsize对象,然后使用add_subplot添加子图。 E.g。

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:')

Simple Example

此方法的好处是语法更接近于subplot()而不是subplots()的调用。例如。子图似乎不支持使用GridSpec来控制子图的间距,但subplot()add_subplot()都有。

答案 3 :(得分:0)

用于在有时很有用的 subplots 中绘制 for loop: 来自 matplotlib(二维)直方图的多个子图的 multivariate 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)