如何在不缩小颜色条的情况下调整子图中的x限制

时间:2016-07-01 19:08:30

标签: python matplotlib

我有一组子图,每个子图都需要一个颜色条。如果我在不设置x限制的情况下绘制每个子图,则x轴会延伸到我的数据域之外并显示大量的空白区域。我正在使用此代码:

#menu {
    width: 16em;
    height: calc(100% - 5em);
    background-color: blue;
    position: fixed;
    bottom: 0;
    left: -12em;
}

#menuIcon {
    height: 4em;
    width: 4em;
    position: relative;
    top: 0;
    left: 12em;
    background-color: green;
}

如果我将import matplotlib.pyplot as plt from matplotlib.mlab import griddata from numpy import ma from mpl_toolkits.axes_grid1 import make_axes_locatable def plot_threshold(ax): """ plot boundary condition (solid) and extrapolated condition(dotted)""" x = np.arange(0,10,.5) slide= Threshold(x) ax.plot(slide[0], slide[1], 'r-', linewidth=2) ex_slide = Extrapolated_threshold(x) ax.plot(ex_slide[0], ex_slide[1], 'r:') def make_subplot(ax, x, y, zdata, title): ax.set_title(title, size =14) CS = ax.tricontourf(x, y, zdata, 100, cmap=clrmap) plot_threshold(ax) #TROUBLESOM LINE BELOW plt.xlim(0,xmax) # create divider for existing axes instance divider = make_axes_locatable(ax) # append axes to rhe right of ax, with 5% width of ax cax1 = divider.append_axes('right', size='4%', pad = 0.1) # create color bar in the appneded axes cbar = plt.colorbar(CS, cax=cax1) clrmap = plt.cm.viridis # Three subplots, stacked vertically fig, axarr = plt.subplots(3, figsize =(8,10), sharex='col') make_subplot(axarr[0], x, y, z1, "Plot 1") make_subplot(axarr[1], x, y, z2, 'Plot 2') make_subplot(axarr[2], x, y, z3, 'Plot 3') 添加到plt.xlim()函数,则前两个子图的颜色条变得非常狭窄且不可读。第三个子图的颜色条不受影响。

make_subplot移除plt.xlim()并将其添加到函数调用下方,如下所示:

make_subplot

不会调整x限制并调整颜色条。

1)为什么不是make_subplot(axarr[0], x, y, z1, "Plot 1") plt.xlim(0,14) make_subplot(axarr[1], x, y, z2, 'Plot 2') plt.xlim(0,14) make_subplot(axarr[2], x, y, z3, 'Plot 3') plt.xlim(0,14) 中的一行对色条的影响不一样?

2)如何在保持快乐色条的同时调整x限制?

enter image description here

1 个答案:

答案 0 :(得分:0)

而不是

make_subplot(axarr[0], x, y, z1, "Plot 1")
plt.xlim(0,14)
make_subplot(axarr[1], x, y, z2, 'Plot 2')
plt.xlim(0,14)     
make_subplot(axarr[2], x, y, z3, 'Plot 3')
plt.xlim(0,14)

make_subplot(axarr[0], x, y, z1, "Plot 1")
axarr[0].set_xlim(0,14)
make_subplot(axarr[1], x, y, z2, 'Plot 2')
axarr[1].set_xlim(0,14)     
make_subplot(axarr[2], x, y, z3, 'Plot 3')
axarr[2].set_xlim(0,14)

我认为plt.xlim作用于色条轴,因为它是调用它时的当前轴。在您的数据显示的轴上调用plt.xlim(即axarr[i])应该可以解决这个问题。

如果这对您不起作用,请按照这些准则https://stackoverflow.com/help/mcve更新您的问题,因为您的代码不能按原样运行。