Вам также необходимо масштабировать / переворачивать изображения, чтобы они отображались вместе, потому что карта, вероятно, имеет гораздо более высокое разрешение, чем карта тепла. Мы позволяем Seaborn выполнить настройку, а затем сопоставим его с imshow
, который отображает карту
Вы можете изменить или создать цветовую карту, чтобы иметь прозрачность около 0, и я оставил код, чтобы показать вам, как это сделать, но полученная цифра была неоптимальной, потому что я не мог прочитать карту в местах с высокой температурой. Как показано, вся тепловая карта является полупрозрачной.
Оставлено для читателя: измените отметки, чтобы они ссылались на координаты карты, а не на индексы тепловой карты.
# add alpha (transparency) to a colormap
import matplotlib.cm from matplotlib.colors
import LinearSegmentedColormap
wd = matplotlib.cm.winter._segmentdata # only has r,g,b
wd['alpha'] = ((0.0, 0.0, 0.3),
(0.3, 0.3, 1.0),
(1.0, 1.0, 1.0))
# modified colormap with changing alpha
al_winter = LinearSegmentedColormap('AlphaWinter', wd)
# get the map image as an array so we can plot it
import matplotlib.image as mpimg
map_img = mpimg.imread('tunis.png')
# making and plotting heatmap
import numpy.random as random
heatmap_data = random.rand(8,9)
import seaborn as sns; sns.set()
hmax = sns.heatmap(heatmap_data,
#cmap = al_winter, # this worked but I didn't like it
cmap = matplotlib.cm.winter,
alpha = 0.5, # whole heatmap is translucent
annot = True,
zorder = 2,
)
# heatmap uses pcolormesh instead of imshow, so we can't pass through
# extent as a kwarg, so we can't mmatch the heatmap to the map. Instead,
# match the map to the heatmap:
hmax.imshow(map_img,
aspect = hmax.get_aspect(),
extent = hmax.get_xlim() + hmax.get_ylim(),
zorder = 1) #put the map under the heatmap
from matplotlib.pyplot import show
show()
![Translucent heatmap plotted over a scaled map](https://i.stack.imgur.com/POcGT.png)