答案 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])
答案 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:')
此方法的好处是语法更接近于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)