【发布时间】:2015-05-05 09:10:39
【问题描述】:
我实际上正在尝试how to annotate heatmap with text in matplotlib? 中提出的解决方案。虽然这实际上适用于数字;我一直在尝试对 unicode 文本做同样的事情,问题是,虽然简单的文本打印得很好,但更奇特的文本(如希腊语)却不是。我试过用一堆编解码器('utf-8-sig'、'cp737'、'cp1252'等)进行编码和解码,但问题仍然存在。有任何想法吗?我正在使用 windows7 和 python 3.3。 使用以下代码将重现该问题。
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
fig5, ax5a = plt.subplots()
data = np.random.rand(5, 4)
heatmap = ax5a.pcolor(data,cmap=plt.cm.Blues)
commUrlCategoryHeatmap = {0: {0: 'νεα',1: 'news',2: 'νεα',3: 'news',4: 'νεα'},
1: {0: 'news',1: 'νεα',2: 'news',3: 'νεα',4: 'νεα'},
2: {0: 'news',1: 'νεα',2: 'Ειδήσεις και ΜΜΕ',3: 'νεα',4: 'news'},
3: {0: 'νεα',1: 'νεα',2: 'news',3: 'Periódicos',4: 'Ειδήσεις και ΜΜΕ'},
4: {0: 'νεα',1: 'news',2: 'νεα',3: 'news',4: 'Ειδήσεις και ΜΜΕ'}}
for y in range(data.shape[0]):
for x in range(data.shape[1]):
print(commUrlCategoryHeatmap[y][x].encode('utf-8').decode('utf-8-sig'))
plt.text(x + 0.5, y + 0.5, commUrlCategoryHeatmap[y][x].encode('utf-8').decode('utf-8-sig') ,horizontalalignment='center',verticalalignment='center',fontsize = 10, rotation = 35)
plt.colorbar(heatmap)
plt.show()
【问题讨论】:
标签: python unicode matplotlib heatmap