【发布时间】:2013-01-24 02:39:16
【问题描述】:
【问题讨论】:
标签: python matplotlib
【问题讨论】:
标签: python matplotlib
如果您已经拥有图形对象,请使用:
f.set_figheight(15)
f.set_figwidth(15)
但是,如果您使用 .subplots() 命令(如您展示的示例中)创建一个新图形,您也可以使用:
f, axs = plt.subplots(2,2,figsize=(15,15))
【讨论】:
fig.set_size_inches一起设置高度和宽度
**fig_kw 部分,被传递给pyplot.figure。
或者,使用figsize 参数创建一个figure() 对象,然后使用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:')
这种方法的好处是语法更接近subplot()而不是subplots()的调用。例如。 subplots 似乎不支持使用GridSpec 来控制子图的间距,但subplot() 和add_subplot() 都支持。
【讨论】:
除了前面的答案,这里有一个选项可以通过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])
【讨论】:
您可以使用plt.figure(figsize = (16,8)) 更改单个图和最多两个子图的图形大小。 (figsize 中的参数可以修改图形大小)
要更改更多子图的图形大小,您可以在创建子图时使用plt.subplots(2,2,figsize=(10,10))。
【讨论】:
用于在 for loop 中绘制 subplots,这有时很有用:
来自multivariate numpy array(二维)的直方图的多个子图的matplotlib 图的示例代码。
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)
【讨论】: