簡體   English   中英

如何使用matplotlib使用unicode文本注釋熱圖?

[英]how to annotate heatmap with unicode text using matplotlib?

我實際上嘗試了如何在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()

您可以將文本放在$符號之間以使用TeX呈現文本,請參閱此鏈接以獲取一些背景信息: http//matplotlib.org/users/mathtext.html

修改繪制文本的行:

    plt.text(x + 0.5, y + 0.5, '$%s$' %  commUrlCategoryHeatmap[y][x],
             ha='center',va='center',fontsize=16, rotation=35)

這給了我這個結果:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM