首頁>Club>
Python資料視覺化。
4
回覆列表
  • 1 # 微生活日記

    說實話,這個我不懂,下面是度娘來的答案,供你參考。

    在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()

    最終得到影象

    成功!

  • 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,作用就是解決負號"-"顯示為方塊的問題。

  • 中秋節和大豐收的關聯?
  • 一直有個敏感的問題,生活中我們接觸最多的錢幣會傳播疫病嗎?