编辑 - 我希望这可以澄清。以下是来自this帖子的代码,与我尝试的内容非常相似。
fig, axes = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
for ax in axes.flat:
im = ax.imshow(np.random.random((10,10)), vmin=0, vmax=1)
cax,kw = mpl.colorbar.make_axes([ax for ax in axes.flat])
plt.colorbar(im, cax=cax, **kw)
plt.show()
Vs以上。
fig, axes = plt.subplots(nrows = 1, ncols = 3, sharex = True, sharey = True)
for ax, z_val, unif, rangenum in zip(axes.flat, z_vals, UI, ranges):
plot = plt.scatter(x_vals, y_vals, s = 5.5 * max(x_vals), c = z_val, cmap = 'rainbow')
if efficiency_or_not:
plot.vmin = 0
plot.vmax = 1
plot.xlabel = 'Uniformity: ' + unif
else:
plot.xlabel = 'Uniformity: ' + unif + ' ' + rangenum + ' ppm'
cax, kw = mpl.colorbar.make_axes([ax for ax in axes.flat])
plt.colorbar(plot, cax = cax, **kw)
plt.savefig('./'+ figname + '.jpg', dpi = 100)
plt.close()
我想要的是水平平铺的3个图并添加下面的颜色栏。
我发现this并且我想使用这种技术....但是我在翻译它时遇到了麻烦。
我有3个独立的运行,它们是相同类型的数据。我想拍摄这3个图并将它们变成一个带有一个颜色条的图形。我需要每次报告执行5次,并且有一组我想强制vmin和vmax。
我目前的功能是......我得到的错误是:
plot_that_2(x_vals, y_vals, plots_list[j], plots_list[j+1], plots_list[j+2],plots_names_list[j], Plots_dictionary[plot_strings_list[i]][0],Plots_dictionary[plot_strings_list[i]][1])
cax, kw = mpl.colorbar.make_axes([ax for ax in axes.flat])
pb = parent.get_position(original=True).frozen() AttributeError: 'list' object has no attribute 'get_position'
第一个异议列在模块中,第二个在程序中,第三个在make_axes中。 x,y和z值都是来自numpy数组的列表。 figname是一个字符串,units是一个字符串,而efficiency_or_not是一个布尔值。
def plot_that_2(x_vals, y_vals, z_1_vals, z_2_vals, z_3_vals, figname, units, efficiency_or_not):
UI = [uniformity_calc(z_1_vals), uniformity_calc(z_2_vals), uniformity_calc(z_3_vals)]
ranges = [ str(int(np.max(z_1_vals) - np.min(z_1_vals))), str(int(np.max(z_2_vals) - np.min(z_2_vals))), str(int(np.max(z_3_vals) - np.min(z_3_vals)))]
z_vals = [z_1_vals, z_2_vals, z_3_vals]
fig, axes = plt.subplots(nrows = 1, ncols = 3, sharex = True, sharey = True)
for ax, z_val, unif, rangenum in zip(axes.flat, z_vals, UI, ranges):
plot = plt.scatter(x_vals, y_vals, s = 5.5 * max(x_vals), c = z_val, cmap = 'rainbow')
if efficiency_or_not:
plot.vmin = 0
plot.vmax = 1
plot.xlabel = 'Uniformity: ' + unif
else:
plot.xlabel = 'Uniformity: ' + unif + ' ' + rangenum + ' ppm'
cax, kw = mpl.colorbar.make_axes([ax for ax in axes.flat])
plt.colorbar(plot, cax = cax, **kw)
plt.savefig('./'+ figname + '.jpg', dpi = 100)
plt.close()
答案 0 :(得分:2)
要将彩条移动到底部,您只需添加orientation="horizontal"
或location='bottom'
。以用户1442911为例:
fig, axes = plt.subplots(nrows=1, ncols=3)
for ax in axes.flat:
im = ax.imshow(np.random.random((10,10)), vmin=0, vmax=1)
cax, kw = mpl.colorbar.make_axes([ax for ax in axes.flat], location='bottom')
plt.colorbar(im, cax=cax, **kw)
plt.show()