代码之家  ›  专栏  ›  技术社区  ›  Gabriel

减少水平色条填充

  •  0
  • Gabriel  · 技术社区  · 6 年前

    我试图生成一个有几个轴的图,每个轴都有自己的色条(下面的代码)。如果使用默认颜色栏打印,则打印和颜色栏之间的水平间距过大:

    enter image description here

    make_axes_locatable() 方法我得到了这个可怕的结果:

    enter image description here

    发生了什么事?我该怎么解决?


    import numpy as np
    from matplotlib import pyplot as plt
    import matplotlib.gridspec as gridspec
    from mpl_toolkits.axes_grid1 import make_axes_locatable
    
    # Random data to plot
    data = np.random.uniform(0., 1., (2, 100))
    z = np.random.uniform(0., 10., 100)
    
    # Define figure
    fig = plt.figure(figsize=(30, 30))
    gs = gridspec.GridSpec(12, 12)
    
    for i in range(2):
        ax = plt.subplot(gs[2 * i:2 + (2 * i), 0:8])
    
        SC = plt.scatter(*data, c=z)
    
        # Colorbar 1
        cbar = plt.colorbar()
    
        # Colorbar 2
        # the_divider = make_axes_locatable(ax)
        # color_axis = the_divider.append_axes("right", size="1%", pad=0.)
        # cbar = plt.colorbar(SC, cax=color_axis)
    
        cbar.set_label("test", fontsize=15, labelpad=10)
    
    fig.tight_layout()
    plt.savefig('test.png', dpi=300, bbox_inches='tight')
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   ImportanceOfBeingErnest    6 年前

    使用 pad colorbar 设置轴和颜色栏之间的填充。 衬垫 pad=0.01 可能有道理。

    import numpy as np
    from matplotlib import pyplot as plt
    
    # Random data to plot
    data = np.random.uniform(0., 1., (2, 100))
    z = np.random.uniform(0., 10., 100)
    
    # Define figure
    fig, axes = plt.subplots(nrows=2, figsize=(30, 30))
    
    for i, ax in enumerate(axes.flat):
        sc = ax.scatter(*data, c=z)
        cbar = fig.colorbar(sc, ax=ax, pad=0.01)
        cbar.set_label("test", fontsize=15, labelpad=10)
    
    fig.tight_layout()
    plt.savefig('test.png', dpi=300, bbox_inches='tight')
    

    enter image description here