解決plt中文亂碼 RuntimeWarning_ Glyph 24402 missing from current font. font.set_text(s, 0, flags=flags)
阿新 • • 發佈:2021-06-11
mean1,mean2,mean3=avgSlove(X,y) label_list = ['色調', '紅色均值', '相對紅色分量', '粗度','高頻能量'] # 橫座標刻度顯示值 xx = range(len(label_list)) rects1 = plt.bar(x=xx, height=mean1, width=0.4, alpha=0.8,align='edge', color='blue') plt.ylim(0, 1) # y軸取值範圍 plt.ylabel("歸一化後的值") plt.xticks([index + 0.2 for index in xx], label_list) plt.xlabel("特徵") plt.show()
如上程式碼產生了如下結果
中文的橫座標沒弄出來,控制檯報 RuntimeWarning: Glyph 24402 missing from current font. font.set_text(s, 0, flags=flags)
查閱資料 https://github.com/matplotlib/matplotlib/issues/15062 發現應該問題是Matplotlib無法正確找到字型並回退到不支援漢字的字型。
https://www.programmersought.com/article/93394200127/
解決辦法
新增 plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
mean1,mean2,mean3=avgSlove(X,y) plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤 label_list = ['色調', '紅色均值', '相對紅色分量', '粗度','高頻能量'] # 橫座標刻度顯示值 xx = range(len(label_list)) rects1 = plt.bar(x=xx, height=mean1, width=0.4, alpha=0.8,align='edge', color='blue') plt.ylim(0, 1) # y軸取值範圍 plt.ylabel("歸一化後的值") plt.xticks([index + 0.2 for index in xx], label_list) plt.xlabel("特徵") plt.show()