Maison >développement back-end >Tutoriel Python >Solution aux caractères chinois tronqués matplotlib en Python

Solution aux caractères chinois tronqués matplotlib en Python

黄舟
黄舟original
2017-05-14 11:28:151933parcourir

Matplotlib est un bon package de traçage pour Python, mais il ne prend pas en charge le chinois lui-même (il semble qu'il n'y ait pas de police chinoise dans sa configuration par défaut), donc s'il apparaît dans l'intrigue chinoise, des caractères tronqués apparaîtront

Matplotlib est un bon package de dessin pour Python, mais il ne prend pas en charge le chinois lui-même (il semble qu'il n'y ait pas de police chinoise dans sa configuration par défaut), donc si le chinois apparaît dans le dessin, des caractères tronqués apparaîtront.

Lorsque matplotlib dessine des images avec des annotations chinoises, il y aura un problème de code tronqué.

Exemple de code :


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

Solution : introduire la police

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn