>  기사  >  백엔드 개발  >  Python의 matplotlib 중국어 왜곡 문자에 대한 솔루션

Python의 matplotlib 중국어 왜곡 문자에 대한 솔루션

黄舟
黄舟원래의
2017-05-14 11:28:151793검색

Matplotlib는 Python에 좋은 플로팅 패키지이지만 중국어 자체를 지원하지 않습니다(기본 구성에 중국어 글꼴이 없는 것 같습니다).

Matplotlib은 Python에 좋은 그리기 패키지이지만 중국어 자체를 지원하지 않습니다(기본 구성에 중국어 글꼴이 없는 것 같습니다). 따라서 중국어가 나타나면 그림에서는 왜곡된 문자가 나타납니다.

matplotlib에서 중국어 주석이 포함된 이미지를 그릴 때 깨진 코드 문제가 발생합니다.

예제 코드:


import matplotlib
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.axl.annotate(nodeTxt,xy=parentPt,xycoords=&#39;axes fraction&#39;,xytext=centerPt,textcoords=&#39;axes fraction&#39;,va="center",ha="center",bbox=nodeType,arrowprops=arrow_args)

def createPlot():
  fig =plt.figure(1,facecolor=&#39;white&#39;)
  fig.clf()
  createPlot.axl=plt.subplot(111,frameon=False)
  plotNode(U&#39;决策点&#39;,(0.5,0.1),(0.1,0.5),decisionNode)
  plotNode(U&#39;叶节点&#39;,(0.8,0.1),(0.3,0.8),leafNode)
  plt.show()

해결책: 글꼴 소개

import matplotlib.pyplot as plt
import matplotlib

#定义自定义字体,文件名是系统中文字体
myfont = matplotlib.font_manager.FontProperties(fname=&#39;C:/Windows/Fonts/simkai.ttf&#39;) 
#解决负号&#39;-&#39;显示为方块的问题 
matplotlib.rcParams[&#39;axes.unicode_minus&#39;]=False 

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.axl.annotate(nodeTxt,xy=parentPt,xycoords=&#39;axes fraction&#39;,xytext=centerPt,textcoords=&#39;axes fraction&#39;,va="center",ha="center",bbox=nodeType,arrowprops=arrow_args,fontproperties=myfont)

def createPlot():
  fig =plt.figure(1,facecolor=&#39;white&#39;)
  fig.clf()
  createPlot.axl=plt.subplot(111,frameon=False)
  plotNode(U&#39;决策点&#39;,(0.5,0.1),(0.1,0.5),decisionNode)
  plotNode(U&#39;叶节点&#39;,(0.8,0.1),(0.3,0.8),leafNode)
  plt.show()

위 내용은 Python의 matplotlib 중국어 왜곡 문자에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.