Axes Subplot y size

时间:2016-08-11 12:58:36

标签: python matplotlib

我有两个共享x轴的子图。第一个是数据和拟合函数,第二个是数据和拟合函数之间的差异。在该图中,两个子图具有相同的y轴大小(以像素为单位)。现在我希望数据的y轴和拟合大于误差轴。我的代码如下:

import matplotlib.pyplot as plt
f, axarr = plt.subplots(2, sharex=True,figsize=(15, 12))
axarr[0].scatter(x, data , facecolors='none', edgecolors='crimson')
axarr[0].plot(x, fit, color='g',linewidth=1.5)
axarr[0].set_ylim([18,10])
axarr[1].plot(x,data-fit,color='k',linewidth=width)
axarr[1].set_ylim([-0.4,0.4])
yticks[-1].label1.set_visible(False)
plt.subplots_adjust(hspace=0.)

是否有任何代码可以设置第二个图的大小?

1 个答案:

答案 0 :(得分:0)

看看this example, using gridspec。我相信这正是你想要的。以下是您的案例采用的示例。 编辑也分享x轴

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec

# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)

# plot it
fig = plt.figure(figsize=(8, 6))
gs = gridspec.GridSpec(2, 1, height_ratios=[3, 1])
ax0 = plt.subplot(gs[0])
ax1 = plt.subplot(gs[1], sharex=ax0)  # <---- sharex=ax0 will share ax1 with ax2
ax0.plot(x, y)
ax1.plot(y, x)

plt.show()

甚至可以通过在第一个链接中关注Hagnes answer来更简单:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.2)
y = np.sin(x)

f, (a0, a1) = plt.subplots(2,1, gridspec_kw = {'height_ratios':[1, 3]}, sharex=True)  # <---- sharex=True will share the xaxis between the two axes
a0.plot(x, y)
a1.plot(y, x)
plt.show()

enter image description here