一、seaborn的中文字体显示(针对windows系统,,使用ipython notebook)

####################
更新:2017年6月16日

这次的seaborn版本是0.7.1,中文显示有时不能正确显示。

经测试发现,必须先导入seaborn包,然后再设置字体为微软雅黑,按照下面的代码运行后,即可成功显示中文字体。

但是如果之后设置了 sns.set_context("talk")之类的,中文又变成了方块,设置 sns.set_context("notebook"),中文就又正确显示,真的有些奇怪,要多试。

### the order of code is important!
### we should import seaborn package first, then configurate the font of sans-serif.
import pandas as pd
import seaborn as sns # first import this package
import sys
# print sys.getdefaultencoding()
# ipython notebook中默认是ascii编码 
stdout = sys.stdout
reload(sys)
sys.stdout = stdout
sys.setdefaultencoding('utf8')
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #指定默认字体  
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# sns.axes_style()
%matplotlib inline

####################

  • 首先:解决seaborn画图有中文时的编码异常错误
import seaborn as sns
import sys
# print sys.getdefaultencoding()
# ipython notebook中默认是ascii编码 
reload(sys)
sys.setdefaultencoding('utf8') 
  • 其次:修改matplotlibrc配置文件中的字体名称
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #指定默认字体   
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# sns.axes_style(),可以看到是否成功设定字体为微软雅黑。
  • 最后:修改seaborn中的一些设置(这里可以先不设置,或四个选项都试下)

sns.set_context("talk")
或者sns.set_context("poster")均可,该函数的其他的两个属性"notebook"和"paper"却不能正常显示中文。



二、matplotlib的中文字体显示(针对windows系统,,使用ipython notebook)

  • 方法一:临时方法
                     优点:直接在代码中指定中文字体文件,在每个出现中文的地方指定  fontproperties为刚才设置的字体;
                     缺点:每个出现中文的地方如title都要指定字体,并不是每个地方如legend都提供指定字体的参数。
                     适用场合:偶尔使用中文显示,出现中文的地方较少。

myfont = matplotlib.font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
# 直接设置为中文时
ax.set_title(u'中文',  fontproperties = myfont)
# 设置x轴标签所对应的刻度的位置
ax.xaxis.set_major_locator(matplotlib.ticker.FixedLocator(np.arange(1, len(temp_name.name) + 1)))
# 某一列数据中均为中文,用该列作为x轴刻度标签时
ax.set_xticklabels(labels = temp_name.name, fontproperties = myfont, rotation = 'vertical')
  • 方法二:永久方法
                  优点:一劳永逸,以后再不用担忧中文问题了,和英文一样如鱼得水。
                  缺点:比较复杂,虽然我试验成功,可是原理我也没弄明白。
                  适用场合:经常使用中文显示,各种地方都有出现中文的可能,如坐标轴刻度标签,图标等等。
  • 首先:网络上的方法:修改matplotlibrc配置文件()。
                  进入Python安装目录下的Lib\site-packages\matplotlib\mpl-data目录,打开matplotlibrc文件,删除font.family和font.sans-serif两行前的#(后来试验,这步可省略),并在font.sans-serif后添加微软雅黑字体(Microsoft YaHei) ,修改axes.unicode_minus为False,示例如下:


这个方法有时有效,有时失效,估计是ipython notebook开启后未必自动去读这个配置文件。
  • 其次:多次试验发现,当解决seaborn中的中文显示问题时,matplotlib的中文显示也解决了。
由于seaborn本身就建立在matplotlib的基础上,因此seaborn的一些设置可能也修改了matploblib的设置。
# 解决seaborn画图有中文时的编码异常错误
import sys
reload(sys)
#sys.setdefaultencoding('utf-8')
sys.setdefaultencoding('utf8')

# 修改matplotlibrc配置文件中的字体名称
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #指定默认字体

mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 
sns.set_context("talk")
#sns.set_context("poster")

python画图包seaborn和matplotlib中文字体显示(针对windows系统,,使用ipython notebook)相关推荐

  1. python中文字体下载_解决Linux系统下python matplotlib中文字体显示问题

    最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些 ...

  2. Mac系统中字体位置及matplotlib中文字体显示问题解决

    Mac系统里面字体存储位置有两个: xinaodeiMac:/ xinao$ cd /Library/Fonts xinaodeiMac:Fonts xinao$ pwd /Library/Fonts ...

  3. python微软雅黑字体_Matplotlib中文字体显示

    在Mac上安装Matplotlib 不使用Anaconda,直接使用pip安装即可: pip3 install matplotlib 向Matplotlib添加中文字体Microsoft YaHei( ...

  4. Mac下matplotlib中文字体无法显示解决办法

    问题 使用matplotlib画图时会出现汉字无法显示的情况如下图所示 Mac系统版本 解决方法 下载所需字体如SimHei Font,此时需要注意,字体格式应为ttf格式. 将下载的字体放到matp ...

  5. 解决mac下jupyter中matplotlib中文无法显示的问题

    换了笔记本之后在jupyter中用matplotlib画图一直无法愉快的显示中文,在网上苦苦查阅了许久,网上主流的方法有两种:一种是下载SimHei,将字体包放到matlotlib相关文件夹下并修改配 ...

  6. QML on Android 在小米5s手机上中文字体显示异常

    前言 随着Qt版本的不断升级,用QML开发Android移动端应用越来越方便,并且支持的功能也逐渐增多,不过由于Android机型实在太多,并且大部分Android系统都是由手机厂商深度定制过,然后在 ...

  7. linux 字体显示更清晰,Fedora下使中文字体显示变得更清晰

    前几天装了Fedora还是同样的老毛病,字体显示不清楚.系统中的字体其实还好,免强可以接受,可是用Firefox 上网就完全让人爱不了.中文字体显示都变得很模糊,看一会,眼晴都受不了. 在网上找了一大 ...

  8. 搞定Opera的中文字体显示

    原贴:http://gnuyhlfh.blog.ubuntu.org.cn/2008/10/31/搞定opera的中文字体显示/ 搞定Opera的中文字体显示 以前也试过Opera,可以这个中文显示实 ...

  9. TIA西门子博途下载HMI程序后,画面中文字体显示乱码的处理对策

    TIA西门子博途下载HMI程序后,画面中文字体显示乱码的处理对策 大家在使用或更换精简屏或精智屏时可能会碰到,组态好的项目下载到HMI后,出现了中文字体显示乱码等异常情况,这时,我们需要注意字体的使用 ...

最新文章

  1. linux ”我的草稿“
  2. 数据通信技术_共建价值空间 共赢发展契机——2020华为贵数通新技术创享会在遵义市圆满举行...
  3. hue 配置mysql数据源_hue-使用mysql作为元数据库
  4. Quartz.Net使用总结
  5. jdbc驱动程序_JDBC操作数据库的步骤
  6. Android 系统(159)----MTK 平台过CTA时,发生权限未明示问题
  7. UnityShader25:在Unity中实现泛光
  8. 人机身份验证开发资料
  9. ArcView GIS 应用与开发技术(3)-地理要素的显示和标注
  10. HBase权威指南【中文版】
  11. 数值计算方法【学习笔记】——引论
  12. 国产版谷歌地球到底有多牛?看入行20年“老人”怎么回答
  13. RGMII2GMII 分析
  14. 苹果logo_苹果LOGO起拍价2万美元?
  15. C# Devexpress控件详细安装攻略
  16. AWS为什么能成功?
  17. springboot框架下利用websocket实现即时通讯
  18. STM32的RS485通信
  19. AD20使用及PCB设计的学习
  20. appinventor认识

热门文章

  1. 旺店通·企业奇门和用友BIP单据接口对接
  2. 物联网安全实验3-BinWalk固件提取分析
  3. MySQL 修改表 删除字段
  4. 带你全面了解数据库基础
  5. 【postgresql】SQL执行顺序
  6. 湖南师大教科院民办幼儿园园长规范办园培训班在湖南智慧教育装备展示体验中心参观学习
  7. Java迭代器详解,看这一篇就够了
  8. 安卓桌面软件_安卓和苹果不同系统的手机怎么互传便签内容? - 学显
  9. oracle防止sql注入proc,解密:Oracle怎么防SQL注入
  10. 抽象类和接口的深度解析