Matplotlib,所有子图的一个颜色条,覆盖在纸张大小上

时间:2018-07-12 10:33:12

标签: python matplotlib overlay subplot colorbar

我遇到了以下问题,我的颜色栏覆盖了以pdf格式“打印”的纸张大小的子图。

代码示例:

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

if __name__ == '__main__':

    titles = np.random.uniform(low=1, high=11, size=(1,10))
    temp = np.random.uniform(low=23, high=200, size=(10,10))
    ctf0102 = np.random.uniform(low=23, high=200, size=(10,10))
    ctf03 = np.random.uniform(low=23, high=200, size=(10,10))

    fig = plt.figure(figsize=(11.69,8.27), dpi=100)

    for num in range(len(titles)):

        ax = fig.add_subplot(3,4,num)

        im = ax.scatter(ctf03[1:,num], ctf0102[:,num], 12, temp[:,num], cmap='magma')

        ax.set_title(titles[num])


    fig.text(0.5, -0.00, '...', ha='center', fontsize=16)

    fig.text(-0.00, 0.5, '...', va='center', rotation='vertical', fontsize=16)

    cbar_ax = fig.add_axes([0.85, 0.15, 0.05, 0.7])
    fig.colorbar(im, cax=cbar_ax)

    plt.tight_layout(pad=2)

    fig.savefig("example.pdf", dpi=fig.dpi, bbox_inches='tight', pad_inches=0.3)

enter image description here

有人知道如何通过调整所有子图的空间大小来将颜色条向右移动吗?除此之外,我还要扩大颜色栏,以使所有子图的顶部和底部都平滑地闭合。

感谢帮助和想法。

1 个答案:

答案 0 :(得分:4)

使用fig.subplots_adjust设置子图的底部,顶部,左侧和右侧位置。然后使用相同的index = (rand_val - tuple_val[0]) / tuple_val[2] bottom定义颜色条垂直放置的位置。并确保颜色栏的左侧位于子图的右侧。

此外,您不能在此处使用top,否则它将更改位置。

tight_layout

enter image description here