看看下面的情节:
我使用以下代码生成了它:
fig, axes = plt.subplots(1,2)
axes[0].set_title("$K = " + str(K) + " , \sigma = " + str(sigma) + "$")
heatmap1 = axes[0].imshow(X1, interpolation='none', cmap=plt.get_cmap("seismic"))
fig.colorbar(heatmap1)
axes[1].set_title(r"$K = " + str(K) + ", \sigma = " + str(sigma) + "$")
heatmap2 = axes[1].imshow(X2, interpolation='none', cmap=plt.get_cmap("seismic"))
fig.colorbar(heatmap2)
plt.subplots_adjust(left=None, bottom=None, right=None, top=None,
wspace=0.4, hspace=.4)
plt.show()
但是,我想纠正以下事项:
有人可以帮我解决这些要求吗?
答案 0 :(得分:2)
以下是对您的代码的一些编辑,它可以执行您想要的操作(我认为)。
我没有两次调用色彩图,而是将两个图中的色阶限制设置为相同(使用vmin
和vmax
)。然后,为了使颜色条与图形具有相同的高度,您需要在保存图形后获取其中一个子图的y位置,并使用它们为颜色条创建单独的轴(否则它们将从,缩小,你的一个子图。)
您可能需要使用subplots_adjust
中的值来使事情合适。
import matplotlib.pyplot as plt
import numpy as np
X1=np.random.rand(10,10)
X2=np.random.rand(10,10)
K,sigma=10,1.5
vmin = np.minimum(X1,X2).min()
vmax = np.maximum(X1,X2).max()
fig, axes = plt.subplots(1,2)
axes[0].set_title("$K = " + str(K) + " , \sigma = " + str(sigma) + "$")
heatmap1 = axes[0].imshow(X1, interpolation='none', cmap=plt.get_cmap("seismic"),
vmin=vmin,vmax=vmax)
axes[1].set_title(r"$K = " + str(K) + ", \sigma = " + str(sigma) + "$")
heatmap2 = axes[1].imshow(X2, interpolation='none', cmap=plt.get_cmap("seismic"),
vmin=vmin,vmax=vmax)
plt.subplots_adjust(left=None, bottom=None, right=0.8, top=None,
wspace=0.4, hspace=.4)
fig.savefig('test.png')
cpos = [axes[0].get_position().bounds[1],
axes[0].get_position().bounds[3]]
cax = fig.add_axes([0.9,cpos[0],0.01,cpos[1]])
fig.colorbar(heatmap1,cax=cax)
fig.savefig('test.png')