将图像添加到绘图-matplotlib PYTHON

将图像添加到绘图-matplotlib PYTHON,python,image,matplotlib,heatmap,Python,Image,Matplotlib,Heatmap,我试图在绘图的右侧插入一个.png图像,并遵循此处提到的代码: 以下是我尝试过的: import numpy as np from matplotlib.colors import LinearSegmentedColormap import matplotlib.pyplot as plt import matplotlib as mpl import matplotlib.cbook as cbook from matplotlib._png import read_png from ma

我试图在绘图的右侧插入一个.png图像,并遵循此处提到的代码:

以下是我尝试过的:

import numpy as np
from matplotlib.colors import LinearSegmentedColormap
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.cbook as cbook
from matplotlib._png import read_png
from matplotlib.offsetbox import OffsetImage 
cmap = mpl.cm.hot
norm = mpl.colors.Normalize(vmin=-1 * outlier, vmax=outlier)
cmap.set_over('green')
cmap.set_under('green')
cmap.set_bad('green')
plt.xlim(0,35)
plt.ylim(0,35)
fig, ax = plt.subplots()
ax.set_aspect('equal')
cb_ax=fig.add_axes([0.85, 0.1, 0.03, 0.8])
img = ax.imshow(np.ma.masked_values(data, outlier), cmap=cmap, norm=norm, interpolation='none',vmax=outlier)
cb = mpl.colorbar.ColorbarBase(cb_ax, cmap=cmap, norm=norm, extend='both')
##axim = plt.subplot2grid(shape, loc, rowspan=1)

## phlo tree
image_file = cbook.get_sample_data('mytree.png',asfileobj=False)
image = plt.imread(image_file)
phyl_ax=fig.add_axes([0.10,0.1, 0.03, 0.8])
phyl_ax.imshow(image,interpolation='nearest')
热量图将位于左侧,树的图像将插入右侧。以上代码就是我得到的

有一些东西被添加到右侧,但显然这不是它应该看起来的样子。 起初我以为我把phyl_ax的维度设置得太小了,但当我试图增加它时,甚至之前的“某物”也没有被添加


有人能指出我的错误在哪里吗?

您正在调用
子批,默认情况下,该子批为您提供一个轴,并通过
添加轴添加轴。你应该做一件或另一件事

...
fig = plt.figure()
ht_ax = fig.add_axes([0.1, 0.1, 0.3, 0.8])
cb_ax = fig.add_axes([0.45, 0.3, 0.02, 0.4])
phyl_ax = fig.add_axes([0.6, 0.1, 0.3, 0.8])

...
--或--

可以使用和来调整布局。您还可以使用获取大小适当的颜色条轴。在这里,我还习惯于将绘图设置为我喜欢的大小比例

gs = gridspec.GridSpec(1, 2, width_ratios=[3, 2]) 
ht_ax = plt.subplot(gs[0])
phyl_ax = plt.subplot(gs[1])
cb_ax, kw = mpl.colorbar.make_axes(ht_ax, shrink=0.55)
...
cb = mpl.colorbar.ColorbarBase(ax=cb_ax, cmap=cmap, norm=norm, extend='both', **kw)

对不起,我需要一点澄清。我在imshow中使用了一个轴作为热图,所以根据你的第一个解决方案,我应该在使用它之前添加这个轴?
gs = gridspec.GridSpec(1, 2, width_ratios=[3, 2]) 
ht_ax = plt.subplot(gs[0])
phyl_ax = plt.subplot(gs[1])
cb_ax, kw = mpl.colorbar.make_axes(ht_ax, shrink=0.55)
...
cb = mpl.colorbar.ColorbarBase(ax=cb_ax, cmap=cmap, norm=norm, extend='both', **kw)