Matplotlib 使用 subplot_mosaic 和 make_axes_locatable 时出现颜色条问题

问题描述 投票:0回答:1

我想使用 subplot_mosaic 创建一个图形,这对于组织绘图非常有用。然而,使用我的代码,当我绘制图形时,我看不到颜色条值和标题。这可能是由于 make_axes_locatable 造成的,但就我而言,我没有选择使用它。

此外,当我保存它时,我得到了整个图,但宽高比没有保留(5,7)。

这是我的代码:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable


def plot2d(data, ax):
    im = ax.imshow(data, aspect="auto")

    divider = make_axes_locatable(ax)
    cax = divider.append_axes("right", size="5%", pad=0.05)
    plt.colorbar(im, cax=cax, label="DATA")


fig = plt.figure(constrained_layout=True)
fig.set_size_inches(5, 7)
ax = fig.subplot_mosaic([["D1"]])

plot2d(np.random.rand(10, 1000), ax["D1"])
plt.savefig("foo3.pdf", bbox_inches="tight", dpi=100)

plt.show()
python matplotlib
1个回答
0
投票

这将保存带有颜色条值、标题和刻度的 pdf 图像。

import numpy as np
from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable

def plot2d(data, ax, cbar_title="", cbar_ticks=None):
    im = ax.imshow(data, aspect="auto")

    divider = make_axes_locatable(ax)
    cax = divider.append_axes("right", size="5%", pad=0.05)
    cbar = plt.colorbar(im, cax=cax, label=cbar_title)
    if cbar_ticks:
        cbar.set_ticks(cbar_ticks)
    return cbar

fig = plt.figure(constrained_layout=True)
fig.set_size_inches(5, 7)
ax = fig.subplot_mosaic([["D1"]])

data = np.random.rand(10, 1000)
cbar_ticks = [0, 0.5, 1]  # Example ticks for the color bar
cbar_title = "DATA"
colorbar = plot2d(data, ax["D1"], cbar_title=cbar_title, cbar_ticks=cbar_ticks)
colorbar.set_label(cbar_title)  # Optional, if you want to set label again

plt.savefig("foo3.pdf", bbox_inches="tight", dpi=100)
plt.show()

如果有帮助,请采纳。 谢谢,

© www.soinside.com 2019 - 2024. All rights reserved.