Matplotlib输出中文(汉字)、减号问题

我安装的是Anaconda3-2.2.0-Windows-x86_64。今天想在图上输出一下中文,结果输出的都是框框。难道中文(汉字)不能正确显示吗?

解决过程如下:

找到配置文件matplotlibrc。可以用everything搜索这个文件。例如我的在C:\Anaconda3\Lib\site-packages\matplotlib\mpl-data路径下。

用文本编辑器打开matplotlibrc文件。

找到font.family一行,将前面的注释号去掉。

找到font.sans-serif一行,将前面的注释号去掉。

在font.sanc-serif后面的值中添加一个中文字体名。我添加的是Microsoft YaHei(微软雅黑),添加后如下:

font.sans-serif     : Microsoft YaHei,, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

(ps:有些中文字体并不能成功。每次修改配置文件后,都要重启python代码的运行consle才能生效)

保存修改,然后就可以显示中文了。附成功显示中文图

可以看到可以可以正确显示中文了,但是坐标上的减号都变成了框框。

解决如下:

在上面提到的配置文件中找到axes.unicode_minus一行,去掉前面的注释符号,将后面的True改成False。OK!

附最后测试图

时间: 2024-10-03 22:29:13

Matplotlib输出中文(汉字)、减号问题的相关文章

修改配置文件matplotlibrc,让Matplotlib显示中文

matplotlib默认不支持中文显示,网上的解决办法有好多种,但是大多数都是通过在代码中指定字体,虽然也能实现,但是多出那么几行代码让人觉得很恶心. 本文介绍一种通过修改配置文件matplotlibrc,让Matplotlib显示中文的方法:在win7,Python2.7.9测试通过 第一步:将中文字体复制到matplotlib的字体目录中 中文字体以微软雅黑为例,在 C:\Windows\Fonts 下面找到“微软雅黑”字体.matplotlib默认安装在 %PythonPath%\Lib\

使用XeLaTex输出中文

最近发现LaTeX真是排版的好工具呀!特别是在写外文期刊文章的时候! 我下载了MiKTex进行安装,然后想写一段汉字进行输出,使用XeLaTex进行编译,结果老是报错.搞了半天也没有搞明白为什么.按理来说XeLaTex支持Unicode编码的字符. 后来我下载了Tex Live套件进行安装,Tex Live套件和MiKeTex相比,安装的包可能多一些,MiKTex更轻量一些.此外,MiKTex只支持Windows系统,而Tex Live支持Windows.Linux以及Mac OS. 如果安装T

Python的print输出中文对齐问题

问题描述: 在使用Python的内建函数print作英文输出时,应用格式化输出可以对齐得很好: s1 = 'I am a long sentence.' s2 = 'I\'m short.' print '%-30s%-20s' %(s1,s2) #'%-30s' 含义是 左对齐,且占用30个字符位 print '%-30s%-20s' %(s2,s1) 输出: 注: 这里应用了最原始的cmd控制台,一些IDE自带的控制台(如Sublime text)可能会有不同的输出效果. 但当字符串包含中文

python数据分析入门——matplotlib的中文显示问题&最小二乘法

正在学习<用python做科学计算>,在练习最小二乘法时遇到matplotlib无法显示中文的问题.查资料,感觉动态的加上几条语句是最好,这里贴上全部的代码. # -*- coding: utf-8 -*- """ Created on Wed Aug 10 23:20:26 2016 @author: Administrator """ import numpy as np from scipy.optimize import le

C语言输出单个汉字字符

1 #include "stdio.h" 2 #include "windows.h" 3 4 int main() 5 { 6 char sText[20] = { "多字节字符串!OK!" }; 7 DWORD dwNum = MultiByteToWideChar(CP_ACP, 0, sText, -1, NULL, 0); 8 printf("dwNum = %d", dwNum); 9 for (int i = 0

(转)C#生成中文汉字验证码源码(webform)

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.Ht

Java应用程序中System.out.println输出中文乱码

Java应用程序中System.out.println输出中文乱码 2013-12-10 21:27:08cnblogs.com-bluepoint2009-点击数:3631 其实,解决办法比较简单,即:编译时指定编码为UTF-8,如: 1 javac -encoding utf-8 HelloJava.java 这样,再运行时就不会出现乱码. 一.中文问题的来源 计算机最初的操作系统支持的编码是单字节的字符编码,于是,在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理.随着计算机的发

简单测试--C#实现中文汉字转拼音首字母

第一种: 这个是自己写的比较简单的实现方法,要做汉字转拼音首字母,首先应该有一个存储首字母的数组,然后将要转拼音码的汉字与每个首字母开头的第一个汉字即"最小"的汉字作比较,这里的最小指的是按拼音规则比较最小,例如a比h小,所以"爱"比"恨"小,同一个字母开头的拼音比较大小以此类推.最后实现的结果是只转汉字,对于中文特殊字符.标点符号和英文都原样输出,不转码. 实现方法如下: 1 using System; 2 using System.Colle

中文汉字转换拼音PHP类

1 <?php 2 /** 3 * 中文汉字转换拼音类 4 * 功能支持 5 * 1.支持中文转换全拼 6 * 2.支持中文转换简拼(首字母) 7 * 3.支持转换的字符串返回格式设置(字符中间的间隔字符) 8 * 方法包含四个可以直接调用 请查看类注释 以及调用示例 9 * getJp.getQp.getJpDelimiter.getQpDelimiter 10 * 11 * 以下是研究本代码看懂本类需要的知识点: 12 * 1.掌握PHP的面向对象编程的基本用法 13 * 2.掌握计算机AS