I'm trying to plot multiple heatmaps using the plt.subplots
. An example I found is as follows:
import numpy as np
import matplotlib.pyplot as plt
# Generate some data that where each slice has a different range
# (The overall range is from 0 to 2)
data = np.random.random((4,10,10))
data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None]
# Plot each slice as an independent subplot
fig, axes = plt.subplots(nrows=1, ncols=4,figsize=(12,3))
i=0
for dat, ax in zip(data, axes.flat):
# The vmin and vmax arguments specify the color limits
im = ax.imshow(dat, vmin=0, vmax=2,cmap='Reds')
# ax.xlabel(str(i))
# ax.ylabel(str(i))
i += 1
# Make an axis for the colorbar on the right side
cax = fig.add_axes([0.95, 0.155, 0.03, 0.67])
fig.colorbar(im, cax=cax)
figtype = 'jpg'
fig.savefig('aaa.jpg',format = figtype,bbox_inches='tight')
fig.tight_layout()
The code succeeds if I comment the following two lines (which is done in the above example):
ax.xlabel(str(i))
ax.ylabel(str(i))
If I use the two lines, I get errors saying:
AttributeError: 'AxesSubplot' object has no attribute 'xlabel'
How can I make it correct?
Thank you all for helping me!!!
If you use Matlab-like style in the interactive plotting, then you could use plt. gca() to get the reference of the current axes of the subplot and combine set_title() method to set title to the subplots in Matplotlib.
Labelling subplots is relatively straightforward, and varies, so Matplotlib does not have a general method for doing this. Simplest is putting the label inside the axes. Note, here we use pyplot. subplot_mosaic , and use the subplot labels as keys for the subplots, which is a nice convenience.
When using the matplotlib object-oriented interface, the correct commands to use are ax.set_xlabel
and ax.set_ylabel
.
(Compare these to plt.xlabel
, etc., for the state-machine interface).
Likewise, to set a title, you need ax.set_title
You can see all the available methods for an axes
instance in the api docs, here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With