I m trying to generate heatmaps for the some data and my code is shown below:
data = [['basis', 2007, 2008],
[1, 2.2, 3.4],
[2, 0, -2.2],
[3, -4.1, -2.5],
[4, -5.8, 1.2],
[5, -5.4, -3.6],
[6, 1.4, -5.9]]
x_header = data[0][1:]
y_header = [i for i in range(1, 13)]
data=data[1:]
for i in range(len(data)):
data[i] = data[i][1:]
arr = np.array(data)
fig, ax = plt.subplots()
#heatmap = plt.pcolor(arr, cmap = 'RdBu')
norm = MidpointNormalize(midpoint=0)
im = ax.imshow(data, norm=norm, cmap=plt.cm.seismic, interpolation='none')
ax.set_xticks(np.arange(arr.shape[1]), minor=False)
ax.set_yticks(np.arange(arr.shape[0]), minor=False)
ax.xaxis.tick_top()
ax.set_xticklabels(x_header, rotation=90)
ax.set_yticklabels(y_header)
fig.colorbar(im)
plt.show()
It generates the image
I also want to show values inside the grid. Is there any way to do that?
By default, Matplotlib does not display gridlines on plots. However, you can use the matplotlib. pyplot. grid() function to easily display and customize gridlines on a plot.
grid() Function. The grid() function in pyplot module of matplotlib library is used to configure the grid lines.
Sure, just do something like:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random((4, 4))
fig, ax = plt.subplots()
# Using matshow here just because it sets the ticks up nicely. imshow is faster.
ax.matshow(data, cmap='seismic')
for (i, j), z in np.ndenumerate(data):
ax.text(j, i, '{:0.1f}'.format(z), ha='center', va='center')
plt.show()
However, the labels are hard to see, so you might want a box around them:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random((4, 4))
fig, ax = plt.subplots()
# Using matshow here just because it sets the ticks up nicely. imshow is faster.
ax.matshow(data, cmap='seismic')
for (i, j), z in np.ndenumerate(data):
ax.text(j, i, '{:0.1f}'.format(z), ha='center', va='center',
bbox=dict(boxstyle='round', facecolor='white', edgecolor='0.3'))
plt.show()
Also, in many cases, ax.annotate
is more useful that ax.text
. It's much more flexible in how you can position text, but it's also more complex. Have a look at the examples here: http://matplotlib.org/users/annotations_guide.html
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