用户工具

站点工具


画图中文显示问题

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
画图中文显示问题 [2020/02/01 21:41]
127.0.0.1 外部编辑
画图中文显示问题 [2020/06/30 11:01] (当前版本)
行 1: 行 1:
-画图中文显示问题 +====== ​画图中文显示问题 ======
-========+
 创建日期 星期六 18 五月 2019 创建日期 星期六 18 五月 2019
  
-1.环境查看 +===== Windows ===== 
-------+  from pylab import * 
 +  from matplotlib import font_manager 
 +  my_font = font_manager.FontProperties(fname="​simsun.ttc"​) 
 +  ​gamma=[0,​0.5,​1,​3,​5] 
 +  def fl(x,​gamma):​ 
 +      return ​-(1-x)**gamma*log(x) 
 +  x=linspace(1e-6,1,100) 
 +  for g in gamma: 
 +      plot(x,​fl(x,​g)) 
 +  legend(['​$\gamma={}$'​.format(g) for g in gamma]) 
 +  xlabel('​真实标签预测概率',​fontproperties=my_font) 
 +  ylabel('​损失',​fontproperties=my_font) 
 +  ylim(0,5) 
 +  xlim(0,1) 
 +  # show() 
 +  plt.savefig('​s.png',​dpi=1000) 
 +===== Linux =====
  
-### a.系统版本查看 
-[hadoop@p168 ~]$ cat /​etc/​redhat-release 
-CentOS Linux release 7.2.1511 (Core)  
  
  
-### b.系统中文字体查看 
-``` 
-[hadoop@p168 ~]$ fc-list :lang=zh 
-/​usr/​share/​fonts/​wqy-microhei/​wqy-microhei.ttc:​ 文泉驿等宽微米黑,​文泉驛等寬微米黑,​WenQuanYi Micro Hei Mono:​style=Regular 
-/​usr/​share/​fonts/​wqy-zenhei/​wqy-zenhei.ttc:​ 文泉驿点阵正黑,​文泉驛點陣正黑,​WenQuanYi Zen Hei Sharp:​style=Regular 
-/​usr/​share/​fonts/​wqy-microhei/​wqy-microhei.ttc:​ 文泉驿微米黑,​文泉驛微米黑,​WenQuanYi Micro Hei:​style=Regular 
-/​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing TW MBE:​style=Light 
-/​usr/​share/​fonts/​wqy-zenhei/​wqy-zenhei.ttc:​ 文泉驿等宽正黑,​文泉驛等寬正黑,​WenQuanYi Zen Hei Mono:​style=Regular 
-/​usr/​share/​fonts/​wqy-zenhei/​wqy-zenhei.ttc:​ 文泉驿正黑,​文泉驛正黑,​WenQuanYi Zen Hei:​style=Regular 
-/​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing TW:​style=Light 
-/​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing HK:​style=Light 
-/​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing CN:​style=Light 
-``` 
  
  
-### c.Python版本及matplotlib配置文件位置查询 +  ​1.环境查看 
-``` +  ------
-[hadoop@p168 ~]$ python +
-Python 2.7.10 (default, Dec 18 2015, 01:​29:​06)  +
-[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 +
-Type "​help",​ "​copyright",​ "​credits"​ or "​license"​ for more information. +
->>>​ import matplotlib +
->>>​ print matplotlib.matplotlib_fname() +
-/​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​matplotlibrc +
->>>​  +
-``` +
-2.第一种解决方法 +
---------- +
-在代码中指定字体配置 +
-``` +
-#​coding:​utf-8 +
-import matplotlib +
-matplotlib.use('​qt4agg'​) +
-from matplotlib.font_manager import * +
-import matplotlib.pyplot as plt +
-#​定义自定义字体,文件名从1.b查看系统中文字体中来 +
-myfont = FontProperties(fname='/​usr/​share/​fonts/​wqy-zenhei/wqy-zenhei.ttc'​) +
-#​解决负号'​-'​显示为方块的问题 +
-matplotlib.rcParams['​axes.unicode_minus'​]=False +
-plt.plot([-1,2,-5,3]) +
-plt.title(u'​中文',​fontproperties=myfont) +
-plt.show() +
-``` +
-3.第二种解决办法 +
---------- +
-首先将windwos中fonts目录下的simhei.ttf拷贝到/​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​fonts/​ttf(文件路径参考1.c,根据实际情况修改)目录中, +
-然后删除~/​.cache/​matplotlib的缓冲目录 +
-第三在代码中动态设置参数: +
-``` +
-#​coding:​utf-8 +
-import matplotlib +
-matplotlib.use('​qt4agg'​) +
-#​指定默认字体 +
-matplotlib.rcParams['​font.sans-serif'​] = ['​SimHei'​]  +
-matplotlib.rcParams['​font.family'​]='​sans-serif'​ +
-#​解决负号'​-'​显示为方块的问题 +
-matplotlib.rcParams['​axes.unicode_minus'​] = False  +
-plt.plot([-1,​2,​-5,​3]) +
-plt.title(u'​中文',​fontproperties=myfont) +
-plt.show() +
-```+
  
-4.第三钟解决办法 +  ### a.系统版本查看 
----------+  ​[hadoop@p168 ~]$ cat /etc/redhat-release 
 +  CentOS Linux release 7.2.1511 (Core) 
  
-首先将windwos中fonts目录下的simhei.ttf拷贝到/​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​fonts/​ttf目录中, 
-然后删除~/​.cache/​matplotlib的缓冲目录 
-第三修改修改配置文件: 
-``` 
-[hadoop@p168 ~]$vim /​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​matplotlibrc 
-``` 
-文件路径参考1.c,根据实际情况修改,找到如下两项,去掉前面的#​,并在font.sans-serif冒号后面加上SimHei,保持退出。 
-font.family         : sans-serif         
-font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif      
-就是知道字库族为sans-serif,​同时添加“SimHei”即宋体到字库族列表中,同时将找到 
-axes.unicode_minus,将True改为False,作用就是解决负号'​-'​显示为方块的问题 
  
 +  ### b.系统中文字体查看
 +  ```
 +  [hadoop@p168 ~]$ fc-list :lang=zh
 +  /​usr/​share/​fonts/​wqy-microhei/​wqy-microhei.ttc:​ 文泉驿等宽微米黑,​文泉驛等寬微米黑,​WenQuanYi Micro Hei Mono:​style=Regular
 +  /​usr/​share/​fonts/​wqy-zenhei/​wqy-zenhei.ttc:​ 文泉驿点阵正黑,​文泉驛點陣正黑,​WenQuanYi Zen Hei Sharp:​style=Regular
 +  /​usr/​share/​fonts/​wqy-microhei/​wqy-microhei.ttc:​ 文泉驿微米黑,​文泉驛微米黑,​WenQuanYi Micro Hei:​style=Regular
 +  /​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing TW MBE:​style=Light
 +  /​usr/​share/​fonts/​wqy-zenhei/​wqy-zenhei.ttc:​ 文泉驿等宽正黑,​文泉驛等寬正黑,​WenQuanYi Zen Hei Mono:​style=Regular
 +  /​usr/​share/​fonts/​wqy-zenhei/​wqy-zenhei.ttc:​ 文泉驿正黑,​文泉驛正黑,​WenQuanYi Zen Hei:​style=Regular
 +  /​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing TW:​style=Light
 +  /​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing HK:​style=Light
 +  /​usr/​share/​fonts/​cjkuni-uming/​uming.ttc:​ AR PL UMing CN:​style=Light
 +  ```
  
  
-5.常见问题 +  ### c.Python版本及matplotlib配置文件位置查询 
-------+  ``` 
 +  [hadoop@p168 ~]$ python 
 +  Python 2.7.10 (default, Dec 18 2015, 01:​29:​06)  
 +  [GCC 4.8.20150623 (Red Hat 4.8.5-4)] on linux2 
 +  Type "​help",​ "​copyright",​ "​credits"​ or "​license"​ for more information. 
 +  >>>​ import matplotlib 
 +  >>>​ print matplotlib.matplotlib_fname() 
 +  /​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​matplotlibrc 
 +  >>>​  
 +  ``` 
 +  2.第一种解决方法 
 +  --------- 
 +  在代码中指定字体配置 
 +  ``` 
 +  #​coding:​utf-8 
 +  import matplotlib 
 +  matplotlib.use('​qt4agg'​) 
 +  from matplotlib.font_manager import * 
 +  import matplotlib.pyplot as plt 
 +  #​定义自定义字体,文件名从1.b查看系统中文字体中来 
 +  myfont = FontProperties(fname='/​usr/​share/​fonts/​wqy-zenhei/​wqy-zenhei.ttc'​) 
 +  #​解决负号'​-'​显示为方块的问题 
 +  ​matplotlib.rcParams['​axes.unicode_minus'​]=False 
 +  plt.plot([-1,2,-5,3]) 
 +  plt.title(u'​中文',​fontproperties=myfont) 
 +  plt.show() 
 +  ``` 
 +  3.第二种解决办法 
 +  ​--------- 
 +  首先将windwos中fonts目录下的simhei.ttf拷贝到/​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​fonts/​ttf(文件路径参考1.c,根据实际情况修改)目录中, 
 +  然后删除~/​.cache/​matplotlib的缓冲目录 
 +  第三在代码中动态设置参数: 
 +  ``` 
 +  #​coding:​utf-8 
 +  import matplotlib 
 +  matplotlib.use('​qt4agg'​) 
 +  #​指定默认字体 
 +  matplotlib.rcParams['​font.sans-serif'​] = ['​SimHei'​]  
 +  matplotlib.rcParams['​font.family'​]='​sans-serif'​ 
 +  #​解决负号'​-'​显示为方块的问题 
 +  matplotlib.rcParams['​axes.unicode_minus'​] = False  
 +  plt.plot([-1,​2,​-5,​3]) 
 +  plt.title(u'​中文',​fontproperties=myfont) 
 +  plt.show() 
 +  ```
  
-### a.当.../​matplotlib/​mpl-data/​fonts/​ttf中没有指定字体是执行时会出现如下错误.+  4.第三钟解决办法 
 +  ---------
  
-font_manager.py:1287: UserWarning:​ findfont: Font family ​[u'sans-serif'] not foundFalling back to Bitstream Vera Sans +  首先将windwos中fonts目录下的simhei.ttf拷贝到/​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​fonts/​ttf目录中, 
-  (prop.get_family()self.defaultFamily[fontext]))+  然后删除~/​.cache/​matplotlib的缓冲目录 
 +  第三修改修改配置文件: 
 +  ``` 
 +  ​[hadoop@p168 ~]$vim /​home/​hadoop/​.pyenv/​versions/​2.7.10/​lib/​python2.7/​site-packages/​matplotlib/​mpl-data/​matplotlibrc 
 +  ``` 
 +  文件路径参考1.c,根据实际情况修改,找到如下两项,去掉前面的#​,并在font.sans-serif冒号后面加上SimHei,保持退出。 
 +  font.family         : sans-serif         
 +  font.sans-serif     : SimHei, ​Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif      
 +  ​就是知道字库族为sans-serif,同时添加“SimHei”即宋体到字库族列表中,同时将找到 
 +  axes.unicode_minus,将True改为False,作用就是解决负号'​-'​显示为方块的问题
  
-### b.有字体但还是显示小方块,​一般是没有删除~/​.matplotlib/​*.cache 的缓冲目录! 
-``` 
-rm -rf ~/​.matplotlib/​*.cache 
-``` 
-### c.matplotlib.use('​qt4agg'​)出错,​plt.show()没显示. 
-原因:​没有安装PyQt4,​参见另外一篇博文《CentOS7.1下python2.7.10安装PyQt4》。 
  
-### d.补充 
  
-目录类unix系统中,~/​.fonts现在建议用~/​.local/​share/​fonts替代了,所以也可将字体文件放在~/​.local/​share/​fonts下,然后执行 +  5.常见问题 
-``` +  ------ 
-fc-cache -f -v ~/​.local/​share/​fonts + 
-``` +  ### a.当.../​matplotlib/​mpl-data/​fonts/​ttf中没有指定字体是执行时会出现如下错误. 
-更新字库缓存。这样会简单点,减低对python类库路径的依赖。+ 
 +  font_manager.py:​1287:​ UserWarning:​ findfont: Font family [u'​sans-serif'​] not found. Falling back to Bitstream Vera Sans 
 +    (prop.get_family(),​ self.defaultFamily[fontext])) 
 + 
 +  ### b.有字体但还是显示小方块,​一般是没有删除~/​.matplotlib/​*.cache 的缓冲目录! 
 +  ``` 
 +  rm -rf ~/​.matplotlib/​*.cache 
 +  ``` 
 +  ### c.matplotlib.use('​qt4agg'​)出错,​plt.show()没显示. 
 +  原因:​没有安装PyQt4,​参见另外一篇博文《CentOS7.1下python2.7.10安装PyQt4》。 
 + 
 +  ### d.补充 
 + 
 +  ​目录类unix系统中,~/​.fonts现在建议用~/​.local/​share/​fonts替代了,所以也可将字体文件放在~/​.local/​share/​fonts下,然后执行 
 +  ``` 
 +  fc-cache -f -v ~/​.local/​share/​fonts 
 +  ``` 
 +  更新字库缓存。这样会简单点,减低对python类库路径的依赖。
  
画图中文显示问题.1580564461.txt.gz · 最后更改: 2020/02/01 21:41 (外部编辑)