matplotlib显示中文

简介: 【注意】 可能与本文主题无关,不过我还是想指出来:使用matplotlib库时,下面两种导入方式是等价的(我指的是等效,当然这个说法可以商榷:) import matplotlib.pyplot as plt   import pylab as plt     【效果图...

【注意】

可能与本文主题无关,不过我还是想指出来:使用matplotlib库时,下面两种导入方式是等价的(我指的是等效,当然这个说法可以商榷:)

import matplotlib.pyplot as plt

 

import pylab as plt

 

 

【效果图】

 

【方式一】FontProperties

 1 import matplotlib.pyplot as plt
 2 from matplotlib.font_manager import FontProperties  # 步骤一
 3 
 4 # ...
 5 
 6 font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)  # 步骤二
 7 plt.xlabel("x轴", fontproperties=font) # 步骤三
 8 plt.ylabel("y轴", fontproperties=font)
 9 plt.title("标题", fontproperties=font)
10 plt.show()

总的来说,很丑陋。

 

【方式二】 fontproperties

1 import matplotlib.pyplot as plt
2 
3 # ...
4 
5 plt.xlabel("x轴") 
6 plt.ylabel("y轴", fontproperties="SimSun") # 步骤一    (宋体)
7 plt.title("标题", fontproperties="SimHei") #          (黑体)
8 plt.show()

灵活,另一个优点:不污染全局字体设置

 

【方式三】rcParams

 1 import matplotlib.pyplot as plt
 2 
 3 plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
 4 plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)
 5 #...
 6 
 7 plt.xlabel("x轴")
 8 plt.ylabel("y轴")
 9 plt.title("标题")
10 plt.show()

简洁的用法。缺点:污染全局字体设置。(所以需要第二步骤)

 

 

【方式四】rc

 1 import matplotlib.pyplot as plt
 2 
 3 font = {'family' : 'SimHei',
 4         'weight' : 'bold',
 5         'size'   : '16'}
 6 plt.rc('font', **font)               # 步骤一(设置字体的更多属性)
 7 plt.rc('axes', unicode_minus=False)  # 步骤二(解决坐标轴负数的负号显示问题)
 8 
 9 #...
10 
11 plt.xlabel("x轴")
12 plt.ylabel("y轴")
13 plt.title("标题")
14 plt.show()

灵活的用法。缺点:影响全局字体(所以需要第二步骤)

 

【总结】

方式二用时才设置,且不会污染全局字体设置,更灵活

方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。

 

 【测试代码】

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 font = {'family' : 'DFKai-SB',
 5         'weight' : 'bold',
 6         'size'   : '16'}
 7 plt.rc('font', **font)  # pass in the font dict as kwargs
 8 plt.rc('axes',unicode_minus=False)
 9 
10 
11 x = np.linspace(0, 10, 1000)
12 y = np.sin(x)
13 z = np.cos(x**2)
14 
15 plt.figure(figsize=(8,4))
16 plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
17 plt.plot(x,z,"b--",label="$cos(x^2)$")
18 plt.xlabel("x轴")
19 plt.ylabel("y轴")
20 plt.title("标题")
21 plt.ylim(-1.2,1.2)
22 plt.legend()
23 plt.show()
View Code

 

 

【附录】

一些中文字体的英文名

宋体     SimSun
黑体     SimHei
微软雅黑     Microsoft YaHei
微软正黑体     Microsoft JhengHei
新宋体     NSimSun
新细明体     PMingLiU
细明体     MingLiU
标楷体     DFKai-SB
仿宋     FangSong
楷体     KaiTi
隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei

目录
相关文章
|
存储 数据挖掘 数据库
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
|
C++ 芯片 编译器
STM32F103标准外设库—— 新建工程与库函数(四)
STM32F103标准外设库—— 新建工程与库函数(四)
671 0
STM32F103标准外设库—— 新建工程与库函数(四)
|
测试技术 数据安全/隐私保护
深入理解与应用软件测试中的边界值分析法
【4月更文挑战第23天】在软件测试的诸多技术中,边界值分析法因其简洁性和高效性而备受青睐。本文旨在探讨边界值分析法的核心原理及其在实际测试场景中的应用。通过对边界条件进行系统的识别、分类和测试,该方法能够有效地发现软件缺陷。我们将详细讨论如何确定边界值,设计测试用例,以及如何处理复杂数据类型的边界情况。此外,文章还将展示通过案例研究来验证边界值分析法在提升测试覆盖率和发现潜在错误方面的实际效益。
|
人工智能 NoSQL atlas
4大企业实例解析:为何MongoDB Atlas成为AI服务构建的首选
本文所提及的仅是MongoDB Atlas在AI领域可实现功能的冰山一角
2191 1
|
4月前
|
监控 小程序 Java
2025最新商业版代练护航工作室平台搭建/电竞代练护航小程序快速搭建部署解析
本项目为游戏陪练平台全栈开发方案,涵盖基础架构规划、多端功能开发及定制化流程。支持用户、打手、工作室、管理与管事五端,实现订单追踪、佣金结算、人员调度等功能。采用UniApp跨端开发,后端基于Spring Boot或ThinkPHP,部署使用Docker或宝塔面板,兼容高并发场景,具备完善的安全与监控机制。
437 0
|
供应链 搜索推荐 API
深度解析1688 API对电商的影响与实战应用
在全球电子商务迅猛发展的背景下,1688作为知名的B2B电商平台,为中小企业提供商品批发、分销、供应链管理等一站式服务,并通过开放的API接口,为开发者和电商企业提供数据资源和功能支持。本文将深入解析1688 API的功能(如商品搜索、详情、订单管理等)、应用场景(如商品展示、搜索优化、交易管理和用户行为分析)、收益分析(如流量增长、销售提升、库存优化和成本降低)及实际案例,帮助电商从业者提升运营效率和商业收益。
573 20
|
存储 NoSQL 架构师
阿里面试:聊聊 CAP 定理?哪些中间件是AP?为什么?
本文深入探讨了分布式系统中的“不可能三角”——CAP定理,即一致性(C)、可用性(A)和分区容错性(P)三者无法兼得。通过实例分析了不同场景下如何权衡CAP,并介绍了几种典型分布式中间件的CAP策略,强调了理解CAP定理对于架构设计的重要性。
725 4
|
消息中间件 存储 监控
深度写作:深入源码理解MQ长轮询优化机制
【11月更文挑战第22天】在分布式系统中,消息队列(Message Queue, MQ)扮演着至关重要的角色。MQ不仅实现了应用间的解耦,还提供了异步消息处理、流量削峰等功能。而在MQ的众多特性中,长轮询(Long Polling)机制因其能有效提升消息处理的实时性和效率,备受关注。
605 12
|
数据可视化 开发者 C++
Qt(C++)使用QChart静态显示3个设备的温度变化曲线
QChart模块是Qt Charts库的基础,提供了用于创建和显示各种类型图表的类和接口。Qt Charts库是一个功能丰富、易于使用的数据可视化工具库,可以帮助开发者在应用程序中添加漂亮而又交互性强的图表。
611 1
Qt(C++)使用QChart静态显示3个设备的温度变化曲线
|
数据采集 机器学习/深度学习 数据挖掘
从混乱到有序,Python数据清洗术,让你的数据分析之路畅通无阻!
【7月更文挑战第20天】数据清洗在数据分析中至关重要,它确保数据质量,影响分析准确性和效率。Python的Pandas库是数据预处理的得力工具。基本步骤包括:导入数据(如`pd.read_csv()`)、检查概况(`head()`, `info()`, `describe()`)、处理缺失值(`fillna()`或`dropna()`)、转换数据类型(`pd.to_numeric()`)、去除重复项(`drop_duplicates()`)、排序和筛选数据,以及对分类变量编码(如使用`LabelEncoder`)。
348 3

热门文章

最新文章

下一篇
开通oss服务