当前位置: 首页 > article >正文

解决pycharm中matplotlab画图不能显示中文的错误

大家在用matplotlab画图时想要设置的中文字体通常显示不出来,这是因为Matplotlib在渲染图形时找不到某些特定的字形(Glyph),尤其是中文字符。这些字符在你的默认字体中不存在,因此Matplotlib无法正确显示它们。

可以通过以下方法解决:

  • 通过设置config字典和更新mpl.rcParams,指定支持中文字符的字体(如宋体),可以避免这些警告。
  • mpl.use('tkAgg'): 确保图形在Tkinter窗口中正确显示。

其实只要在代码里面加上下面内容即可:

import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('tkAgg')

# 设置图形配置
config = {
    "font.family": 'serif',
    "mathtext.fontset": 'stix',  # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大
    "font.serif": ['SimSun'],  # 宋体
    'axes.unicode_minus': False  # 处理负号,即-号
}
matplotlib.rcParams.update(config)

1.mpl.use('tkAgg')

mpl.use('tkAgg') 是用来设置Matplotlib的后端(backend)。Matplotlib有多个后端,它们决定了图形如何渲染和显示。tkAgg 是一个基于Tkinter(Python的标准GUI库)的agg后端,它会将图形渲染为位图(bitmap),并通过Tkinter窗口显示。

  • 用途: 这个设置通常在你需要通过图形用户界面(GUI)显示图形时使用。例如,如果你正在编写一个需要图形交互的应用程序,那么使用tkAgg后端是很有用的。

2. config 字典

这个字典包含了多个键值对,用来配置Matplotlib的图形显示行为。

  • "font.family": 'serif':

    • 设置默认字体为衬线字体(serif)。衬线字体通常在文本处理中使用,因为它们在长篇阅读时更易于识别。
  • "mathtext.fontset": 'stix':

    • 设置Matplotlib渲染数学字体时使用的字体集为STIX字体。STIX字体集是一组高质量的字体,专为科学和技术文档设计,与Times New Roman字体风格相似。
  • "font.serif": ['SimSun']:

    • 设置衬线字体为宋体(SimSun),这是一种常用的中文字体。
  • 'axes.unicode_minus': False:

    • 处理负号(-)的显示问题。在某些情况下,Unicode中的负号可能无法正确显示,因此将其设置为False可以确保负号以更可预测的方式显示。

3. mpl.rcParams.update(config)

  • 这一行代码将config字典中的配置应用到Matplotlib的全局设置中。mpl.rcParams是一个字典对象,包含Matplotlib的各种设置参数。通过调用update方法,可以将自定义配置应用到这些参数中,从而更改Matplotlib的默认行为。


http://www.kler.cn/news/331054.html

相关文章:

  • MeterSphere压测配置说明
  • Vue CLI项目创建指南:选择预设与包管理器(PNPM vs NPM)
  • 平面电磁波(解麦克斯韦方程)
  • JS基础练习|动态创建多个input,并且支持删除功能
  • 【C++】模拟实现红黑树
  • JDBC原生事务管理,类比超市购物来讲解(不常用,但作为基础还是要了解一下)
  • django搭建一个AI博客进行YouTube视频自动生成文字博客
  • 14-函数返回指针
  • electron出现乱码和使用cmd出现乱码
  • 主流前端框架的详细对比和选择建议
  • express,MySQL 实现登录接口
  • 2024.9.28更换启辰R30汽车火花塞
  • 如何给一张图像判断失真类型?
  • vscode安装及c++配置编译
  • 【PostgreSQL】提高篇——深入了解不同类型的 JOIN(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)应用操作
  • GaussDB关键技术原理:高弹性(六)
  • 讲职场:不要经常说消极的话
  • SAP 批量修改角色权限
  • 关于Vben Admin多标签页面缓存不生效的问题
  • python入门/列表for循环解析/ [item*item for item in range(1,11)]