I am using python to draw a figure with 3 subplots. I want to set the colormap to be hot for each subplot and my code is like:
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(20,15))
count = 0
for ax in axes.flat:
count += 1
if count == 1:
im = ax.imshow(data_in_array, interpolation='nearest',vmin=0, vmax=150)
ax.set_xticks(range(24))
ax.set_xticklabels(('6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','0','1','2','3','4','5'),fontsize=15)
ax.set_yticks(range(8))
ax.set_yticklabels(('Belltown', 'Downtown', 'Industrial District', 'Wallingford', 'University District', 'Capitol Hill', 'Lakecity','Ballard'),fontsize=15)
ax.set_title('arriving hours of travel survey',fontsize=15)
plt.hot()
if count == 2:
im = ax.imshow(data_out_array, interpolation='nearest',vmin=0, vmax=150)
ax.set_xticks(range(24))
ax.set_xticklabels(('6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','0','1','2','3','4','5'),fontsize=15)
ax.set_yticks(range(8))
ax.set_yticklabels(('Belltown', 'Downtown', 'Industrial District', 'Wallingford', 'University District', 'Capitol Hill', 'Lakecity','Ballard'),fontsize=15)
ax.set_title('leaving hours of travel survey',fontsize=15)
plt.hot()
if count == 3:
im = ax.imshow(data_stay_array, interpolation='nearest',vmin=0, vmax=150)
ax.set_xticks(range(24))
ax.set_xticklabels(('6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','0','1','2','3','4','5'),fontsize=15)
ax.set_yticks(range(8))
ax.set_yticklabels(('Belltown', 'Downtown', 'Industrial District', 'Wallingford', 'University District', 'Capitol Hill', 'Lakecity','Ballard'),fontsize=15)
ax.set_title('stay hours of travel survey',fontsize=15)
plt.hot()
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.75, 0.1, 0.03, 0.8])
fig.colorbar(im, cax=cbar_ax)
plt.show()
However, my plot is like:
The first one is not the hot colormap, any idea to fix that?
When you are plotting on the axes, you need to set the global colorbar before plotting. Hence, you need to have a
plt.hot()
call before the firstax.imshow()
.