回覆列表
-
1 # 微生活日記
-
2 # IT老友
有以下2種解決辦法,個人更喜歡第二種,一勞永逸。
1,在程式碼中動態指定字型配置
2,修改matplotlib配置檔案,即\Anaconda3\Lib\site-packages\matplotlib\mpl-data\matplotlibrc這個檔案。
用記事本/Nodepad+等文字編輯器開啟,查詢到font.family ,去掉前面的"#"
然後查詢font.sans-serif,去掉前面的#,並新增"Simhei"即宋體到字型檔族列表中
查詢axes.unicode_minus,將True改為False,作用就是解決負號"-"顯示為方塊的問題。
說實話,這個我不懂,下面是度娘來的答案,供你參考。
在python中,預設情況下是無法顯示中文的,如下程式碼:
[python] view plain copy import matplotlib.pyplot as plt # 定義文字框和箭頭格式 decisionNode = dict(boxstyle = "sawtooth", fc = "0.8") leafNode = dict(boxstyle = "round4", fc = "0.8") arrow_args = dict(arrowstyle = "<-") # 繪製帶箭頭的註解 def plotNode(nodeTxt, centerPt, parentPt, nodeType) : createPlot.ax1.annotate(nodeTxt, xy = parentPt, xycoords = "axes fraction", xytext = centerPt, textcoords = "axes fraction", va = "center", ha = "center", bbox = nodeType, arrowprops = arrow_args) def createPlot() : fig = plt.figure(1, facecolor="white") fig.clf() createPlot.ax1 = plt.subplot(111, frameon = False) plotNode(U"決策節點", (0.5, 0.1), (0.1, 0.5), decisionNode) plotNode(U"葉節點", (0.8, 0.1), (0.3, 0.8), leafNode) plt.show() createPlot()得到影象如下:
產生中文亂碼的原因就是字型的預設設定中並沒有中文字型,所以我們只要手動新增中文字型的名稱就可以了
手動增加如下程式碼
[python] view plain copy
from pylab import * mpl.rcParams["font.sans-serif"] = ["SimHei"]原始碼修改如下:
[python] view plain copy import matplotlib.pyplot as plt from pylab import * mpl.rcParams["font.sans-serif"] = ["SimHei"] # 定義文字框和箭頭格式 decisionNode = dict(boxstyle = "sawtooth", fc = "0.8") leafNode = dict(boxstyle = "round4", fc = "0.8") arrow_args = dict(arrowstyle = "<-") # 繪製帶箭頭的註解 def plotNode(nodeTxt, centerPt, parentPt, nodeType) : createPlot.ax1.annotate(nodeTxt, xy = parentPt, xycoords = "axes fraction", xytext = centerPt, textcoords = "axes fraction", va = "center", ha = "center", bbox = nodeType, arrowprops = arrow_args) def createPlot() : fig = plt.figure(1, facecolor="white") fig.clf() createPlot.ax1 = plt.subplot(111, frameon = False) plotNode(U"決策節點", (0.5, 0.1), (0.1, 0.5), decisionNode) plotNode(U"葉節點", (0.8, 0.1), (0.3, 0.8), leafNode) plt.show() createPlot()最終得到影象
成功!