Python学习过程问题记录(二):Matplotlib中文显示问题

这篇具有很好参考价值的文章主要介绍了Python学习过程问题记录(二):Matplotlib中文显示问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境:macOS Monterey 12.2.1、Python3.10.2、Matplotlib 3.5.1

目录

方法一:修改配置文件,全局字体修改

例外情况

方法二:rcParams设置,全局字体修改

方法三:fontproperties设置,非全局字体修改

方法四:FontProperties设置,非全局字体修改


方法一:修改配置文件,全局字体修改

搜索网络的解决方式,通过copy字体和修改matplotlibrc的三处文本解决问题,大部分情况下代码能正常显示中文。

1. 终端输入命令:python,进入Python界面输入代码,获取matplotlib包所在的配置文件的路径。比如我的为: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc

import matplotlib
matplotlib.matplotlib_fname()     #输出matplotlib包所在的配置文件的路径
Python学习过程问题记录(二):Matplotlib中文显示问题
获取matplotlib包配置文件的路径

2. 根据第一步获取路径打开文件夹。比如我的路径为:/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf

3. 网络下载中文字体放进去,比如SimHei.ttf(黑体)、SimSun.ttf(宋体),YaHei.ttf(微软雅黑)。要ttf格式的,并安装字体

4. 使用文本编辑或sublime Text软件打开matplotlibrc文件。(位置:/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc
(1)找到font.family: sans-serif,去掉最前面的#
(2)找到font.sans-serif:,去掉前面的#,并将刚才的SimHei、SimSun、Microsoft YaHei添加进去。

Python学习过程问题记录(二):Matplotlib中文显示问题
修改matplotlibrc文件的font设置


(3)找到axes.unicode_minus: True,去掉最前面的#,并将True改为False

Python学习过程问题记录(二):Matplotlib中文显示问题
修改matplotlibrc文件的axes设置

4. 保存、关闭matplotlibrc文件。

5. 打开/Users/用户名/.matplotlib文件夹,把里面的文件删掉。我的里面只有一个fontlist-v330.json

6. 以后的大部分代码不用任何设置可以正常显示中文了。

如以下代码绘制的图形中文标题正常显示。

import matplotlib.pyplot as plt

input_values = [1, 2, 3, 4, 5, 6]
squares = [1, 4, 9, 16, 25, 36]
fig, ax = plt.subplots()
ax.plot(input_values, squares, linewidth=3)
ax.set_title("平方值", fontsize=20)
ax.set_xlabel("值", fontsize=14)
ax.set_ylabel("平方-值", fontsize=14)
ax.tick_params(axis='both', labelsize=14)
plt.show()
Python学习过程问题记录(二):Matplotlib中文显示问题
中文正常显示

例外情况

虽然方法一通过修改配置文件修改了全局的字体设置,但以下场景绘制的图像还是不能正常显示中文:代码中图形使用plt.style.use('seaborn')设置时。

可以用方法二来解决。

import matplotlib.pyplot as plt
...
plt.style.use('seaborn')    # 上述代码加入此句代码
fig, ax = plt.subplots()
...    
Python学习过程问题记录(二):Matplotlib中文显示问题
中文不能正常显示

方法二:rcParams设置,全局字体修改

1. 在plt.style.use('seaborn') 后面加上字体设置代码,即可显示中文。字体设置代码必须在seaborn代码后面才能生效。

2. 字体设置只针对该py文件plt.style.use('seaborn') 后面的代码有效,如果后面的图像又使用类似plt.style.use('seaborn') 语句,还需要再次设置字体代码。

import matplotlib.pyplot as plt # 最前面如果已经import,此句可以不要       
...
plt.style.use('seaborn')
# 字体设置代码
plt.rcParams['font.sans-serif'] = 'Microsoft Yahei' # 显示汉字:SimHei黑体,simsum宋体,Microsoft YaHei雅黑。根据系统安装的字体,有的能用有的不能用,我的是这三个可以。
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
Python学习过程问题记录(二):Matplotlib中文显示问题
中文又能正常显示

方法三:fontproperties设置,非全局字体修改

1. 在plt.title()、plt.xlabel(),plt.ylabel()参数设置中,使用fontproperties指定字体。

2. 可以指定不同的字体,但字体必须在ttf里,并已安装。

import matplotlib.pyplot as plt

input_values = [1, 2, 3, 4, 5, 6]
squares = [1, 4, 9, 16, 25, 36]
plt.style.use('seaborn')
plt.plot(input_values, squares, linewidth=3)
plt.figure("Hello测试中文!",facecolor='lightgray')
plt.title("测试中文",fontsize=20,fontproperties="Microsoft Yahei")
plt.xlabel("X值", fontsize=14,fontproperties="SimHei")
plt.ylabel("Y值", fontsize=14,fontproperties="SimHei")
plt.show()
Python学习过程问题记录(二):Matplotlib中文显示问题
中文正常显示(可以不同字体)

方法四:FontProperties设置,非全局字体修改

此方法需要导入FontProperties模块、设置myfont变量,并指定fontproperties参数三个步骤,虽繁琐,但可以指定ttc格式的字体文件

1. 导入FontProperties模块:from matplotlib.font_manager import FontProperties

2. 设置变量myfont = FontProperties(fname=r"/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/PingFang.ttc", size=14) 

3. plt.title()、plt.xlabel(),plt.ylabel()参数设置中,使用fontproperties指定字体为变量myfont。 

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties    # 步骤一

input_values = [1, 2, 3, 4, 5, 6]
squares = [1, 4, 9, 16, 25, 36]
# 步骤二
myfont = FontProperties(fname=r"/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/PingFang.ttc", size=14)

plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(input_values, squares, linewidth=3)
ax.set_title("平方值", fontproperties=myfont)      # 步骤三
ax.set_xlabel("值", fontproperties=myfont)        # 步骤三
ax.set_ylabel("平方-值", fontproperties=myfont)    # 步骤三
ax.tick_params(axis='both', labelsize=14)

plt.show()
Python学习过程问题记录(二):Matplotlib中文显示问题
中文正常显示指定字体

还有一种通过rc设置的全局字体修改方法,和方法二有些类似。但试了一下不太好用,就不写了。文章来源地址https://www.toymoban.com/news/detail-419293.html

到了这里,关于Python学习过程问题记录(二):Matplotlib中文显示问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Matplotlib不显示中文解决办法

    Matplotlib不显示中文解决办法

      此处选择绘制电影票房条形图作为案例讲解。   可以看到在x轴的刻度上本应该显示各个电影的名字,但是却都变成了方框。 解决这个问题的主要思路是:设置一个字体变量my_font,让路径是你电脑里的本地字体,然后在需要显示中文的代码中,单独将字体设置为这个字体变

    2024年02月05日
    浏览(13)
  • 优雅解决Python中matplotlib绘图时汉字显示不正常的问题

    优雅解决Python中matplotlib绘图时汉字显示不正常的问题

    我们使用了如下代码,为了在图表上绘制中文 图表最后出现了这种方框形式的错误。 并报了如下错误 这种报错,实际是一种警告,并不影响程序的正常运行,所以最后也能出效果图,但无法正常显示中文。其实就是matplotlib 库内没有 SimHei 字体,所以需要下载相关文件。 下

    2024年04月25日
    浏览(11)
  • Ubuntu下让matplotlib显示中文字体

    Ubuntu下让matplotlib显示中文字体

    参考文章: https://zodiac911.github.io/blog/matplotlib-chinese.html Ubuntu下python的matplotlib库显示中文字体很不方便,本文快速解决这个问题。 Ubuntu的字体目录在 /usr/share/fonts 下,自带的中文字体很烂,先安装一下中文字体库。 终端输入: 你会发现在 /usr/share/fonts/MyFonts 下添加了很多新字

    2024年02月07日
    浏览(57)
  • 两招解决Python画图无法显示中文的问题

    两招解决Python画图无法显示中文的问题

        小伙伴们用Python进行数据可视化的时候可能会遇到这样的问题(以Jupyter Notebook为例):  咱们明明输入的有中文,但图片却只显示字母不显示汉字。解决这个问题,只需要在源代码的基础上加入以下代码:  这样中文就显示出来了。     还是以Jupyter Notebook为例,直接运

    2024年02月15日
    浏览(12)
  • Python 学习之路:python3中pygame解决中文显示

    Python 学习之路:python3中pygame解决中文显示

            这篇文章主要介绍python3中pygame解决中文显示问题,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。   1.实例代码展示: 2.实例运行效果: 3.路径和字体设置:         需要自己下载好字体,放置一个指定

    2024年02月11日
    浏览(14)
  • python黑客代码雨:实现包括中文等的多种语言,全屏幕显示,从根本解决中文不显示问题,有完整可执行代码

    python黑客代码雨:实现包括中文等的多种语言,全屏幕显示,从根本解决中文不显示问题,有完整可执行代码

    完整代码放在最下面 上结果图: 中文无法显示的亚子:(也挺好看的哈哈) 正题: 代码能跑但是中文是这种乱码或者黑屏的情况主要是因为没有指定字体或者字体是你电脑没有的 如何找到自己电脑的字体呢,代码如下: 将获取的字体复制到一个word文档或者其他方式都可以

    2024年02月12日
    浏览(13)
  • 【python】jupyter notebook导出pdf和pdf不显示中文问题

    【python】jupyter notebook导出pdf和pdf不显示中文问题

    使用jupyter notebook导出pdf时,出现了一些问题: 1)会报错,缺少安装包; 2)没有报错并且生成了pdf,但是只显示英文,不显示中文; 3)插入svg图片问题; 下面是给出了一些网搜后适用自己的解决办法。 导出pdf步骤: File- Download as - PDF via LaTex(.pdf) : 出现报错没有 Pandoc :

    2024年02月11日
    浏览(14)
  • 树莓派-python3.11 记录opencv 安装过程遇到问题

    树莓派-python3.11 记录opencv 安装过程遇到问题

    按照这一篇进行树莓派4b安装opencv-python详细过程。 方法一:大通过编译安装,其中会遇到不少问题,之前安装过一遍走通过一次,但是python版本高了之后遇到很多问题。目前没走通,给出解决方案以供参考。  在4.配置cmake时遇到第一个问题, 这段代码会显示如下的报错:

    2024年02月03日
    浏览(11)
  • Python的Matplotlib 设置中文字体,字号

      生成需要绘图的数据:  设定曲线的标签、横纵坐标、横纵轴名称、图例。 其中的“size = 12”、“fontsize=12”是指12像素,在mpl中,默认单位是像素,而word中的字号单位是磅。1磅=4/3像素,所以size=12对应的是小五号字(9磅)。    

    2024年02月02日
    浏览(78)
  • Python中使用matplotlib时显示中文乱码_(或更改字体)

    Python中使用matplotlib时显示中文乱码_(或更改字体)

            在使用matplotlib绘制可视化图表时,图表的中文显示乱码,只能正常显示英文内容,如下图所示:      一般显示乱码是由于编码问题导致的,而matplotlib 默认使用ASCII 编码,但是当使用pyplot时,是支持unicode编码的,只是默认字体是英文字体,导致中文无法正常显

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包