记录:3.pycharm,进行画图,显示不出中文

文章讲述了在使用matplotlib进行数据可视化时遇到中文无法正常显示的问题,以及如何通过设置字体为SimHei来解决这个问题。代码示例中展示了在绘图前添加字体设置语句,消除警告并成功显示中文的方法。

尝试使用matplotlib进行画图,代码如下:

import matplotlib.pyplot as plt

# 创建了一个名为squares 的列表,在其中存储要用来制作图表的数据。
squares = [1, 4, 9, 16, 25]
# 调用函数subplots()
# 这个函数可在一张图片中绘制一个或多个图表。
# 变量fig 表示整张图片。变量ax 表示图片中的各个图表,大多数情况下要使用它。
fig , ax = plt.subplots()
# 调用方法plot(),尝试根据给定的数据以有意义的方式绘制图表。
ax.plot(squares , linewidth = 3)

# 设置图表标题并给坐标轴加上标签
# fontsize 指定图表中各种文字的大小
ax.set_title("平方数", fontsize = 24)
ax.set_xlabel("值", fontsize = 14)
ax.set_ylabel("值的平方", fontsize = 14)
# 设置刻度标记的大小
ax.tick_params(axis = 'both' , labelsize = 14)


plt.show()

结果图片可以正常显示,但是图中的中文却不能显示出来

并有报错如下:

D:\python_train\venv\Scripts\python.exe D:/python_train/mash/mpl_squares.py
D:\python\lib\tkinter\__init__.py:804: UserWarning: Glyph 20540 (\N{CJK UNIFIED IDEOGRAPH-503C}) missing from current font.
  func(*args)
D:\python\lib\tkinter\__init__.py:804: UserWarning: Glyph 30340 (\N{CJK UNIFIED IDEOGRAPH-7684}) missing from current font.
  func(*args)
D:\python\lib\tkinter\__init__.py:804: UserWarning: Glyph 24179 (\N{CJK UNIFIED IDEOGRAPH-5E73}) missing from current font.
  func(*args)
D:\python\lib\tkinter\__init__.py:804: UserWarning: Glyph 26041 (\N{CJK UNIFIED IDEOGRAPH-65B9}) missing from current font.
  func(*args)
D:\python\lib\tkinter\__init__.py:804: UserWarning: Glyph 25968 (\N{CJK UNIFIED IDEOGRAPH-6570}) missing from current font.
  func(*args)
D:\python\lib\tkinter\__init__.py:1883: UserWarning: Glyph 20540 (\N{CJK UNIFIED IDEOGRAPH-503C}) missing from current font.
  return self.func(*args)
D:\python\lib\tkinter\__init__.py:1883: UserWarning: Glyph 30340 (\N{CJK UNIFIED IDEOGRAPH-7684}) missing from current font.
  return self.func(*args)
D:\python\lib\tkinter\__init__.py:1883: UserWarning: Glyph 24179 (\N{CJK UNIFIED IDEOGRAPH-5E73}) missing from current font.
  return self.func(*args)
D:\python\lib\tkinter\__init__.py:1883: UserWarning: Glyph 26041 (\N{CJK UNIFIED IDEOGRAPH-65B9}) missing from current font.
  return self.func(*args)
D:\python\lib\tkinter\__init__.py:1883: UserWarning: Glyph 25968 (\N{CJK UNIFIED IDEOGRAPH-6570}) missing from current font.
  return self.func(*args)

经查找学习,找出原因是: Matplotlib 默认情况不支持中文

解决方法:

在绘图前,对代码中添加如下代码:

# 在代码中添加如下语句 —— 设置字体为:SimHei(黑体)
plt.rcParams['font.sans-serif']=['SimHei'] 

最终结果:未报错

 

 

PyCharm 中使用 `plt.show()` 无法显示图片的问题,通常与图形后端的配置、环境变量或版本兼容性有关。以下是解决此类问题的详细方法: ### 检查并修改 Matplotlib 的图形后端设置 Matplotlib 使用不同的“后端”来渲染图形。某些后端可能与 PyCharm 不兼容,导致 `plt.show()` 无法正常显示图像。可以通过以下方式更改后端: 1. 找到 Matplotlib 的配置文件 `matplotlibrc`,其路径可通过以下代码获取: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 2. 在配置文件中找到 `backend:` 行,并将其更改为兼容的后端,例如: ``` backend: TkAgg ``` 或者尝试其他后端如 `Agg`, `Qt5Agg`, `GTK3Agg` 等。 3. 保存文件并重新运行脚本[^2]。 ### 禁用 PyCharm 的科学模式(Scientific Mode) PyCharm 的 Scientific Mode 可能会干扰 Matplotlib 的图形显示。如果启用了该功能,可以按照以下步骤禁用: 1. 打开 PyCharm 设置(Settings)。 2. 进入 `Tools → Python Scientific`。 3. 取消勾选 `Show plots in tool window` 选项。 4. 应用更改并重启 PyCharm[^2]。 ### 添加 `pylab.show()` 显式调用 在某些情况下,仅调用 `plt.imshow()` 而不显式调用绘图展示函数会导致图像不显示。可以在 `plt.imshow()` 后添加 `pylab.show()` 来确保图像窗口弹出: ```python import numpy as np import matplotlib.pyplot as plt import pylab train_set_x_orig, train_set_y, test_set_x_orig, test_set_y, classes = load_dataset() index = 5 plt.imshow(train_set_x_orig[index]) pylab.show() ``` ### 解决 QT 平台插件路径问题 如果出现类似 `qt platform plugin could not be found` 的错误,说明 Qt 插件路径未正确配置。可以按以下步骤设置环境变量: 1. 打开控制面板 → 系统设置 → 高级系统设置 → 环境变量。 2. 在“系统变量”部分点击“新建”。 3. 设置变量名称为 `QT_PLUGIN_PATH`,变量值为 Qt 插件目录的路径,例如: ``` C:\ProgramData\Anaconda3\Library\plugins ``` (请根据你的实际安装路径进行调整) 4. 保存设置并重启 PyCharm[^3]。 ### 检查 Matplotlib 版本 不同版本的 Matplotlib 存在行为差异,建议检查当前安装的版本以确认是否存在已知问题: ```python import matplotlib print(matplotlib.__version__) ``` 如果版本较低,建议升级到最新稳定版: ```bash pip install --upgrade matplotlib ``` ### 示例代码验证图像显示 可以使用以下代码测试图像是否能够正常显示: ```python import matplotlib.pyplot as plt import numpy as np # 创建一个随机图像 img = np.random.rand(100, 100) plt.imshow(img) plt.title("Test Image") plt.colorbar() plt.show() ``` ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值