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

python pyplot 输出支持中文

环境MACOS
我在使用pyplot输出支持中文的问题,在使用matplotlib绘图时遇到了中文显示为方块或者乱码的问题。
先尝试再windows下是否可以解决,

在 Python 的 Matplotlib 中使用 pyplot 输出中文时,默认字体可能不支持中文显示(会出现方块或乱码)。以下是让 pyplot支持中文的完整方法:


方法 1:动态指定字体

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties# 指定中文字体路径(替换为你系统的字体路径)
#font_path = 'C:/Windows/Fonts/simhei.ttf'  # Windows 黑体路径
font_path = '/System/Library/Fonts/STHeiti Medium.ttc'  # macOS 黑体-简路径
# font_path = '/usr/share/fonts/truetype/wqy/wqy-microhei.ttc'  # Linux 文泉驿微米黑# 创建字体属性对象
chinese_font = FontProperties(fname=font_path)# 示例绘图
plt.plot([1, 2, 3], [4, 5, 6])
plt.title("中文标题示例", fontproperties=chinese_font)
plt.xlabel("X轴标签", fontproperties=chinese_font)
plt.ylabel("Y轴标签", fontproperties=chinese_font)
plt.show()

方法 2:全局设置中文字体

import matplotlib.pyplot as plt# 设置全局中文字体(以 "SimHei" 为例,适用于 Windows)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为黑体
plt.rcParams['axes.unicode_minus'] = False    # 解决负号 "-" 显示为方块的问题# 示例绘图
plt.plot([1, 2, 3], [4, 5, 6])
plt.title("中文标题示例")
plt.xlabel("X轴标签")
plt.ylabel("Y轴标签")
plt.show()


常见中文字体名称对照表

操作系统字体名称字体文件路径示例
WindowsSimHei(黑体)C:/Windows/Fonts/simhei.ttf
WindowsMicrosoft YaHei(微软雅黑)C:/Windows/Fonts/msyh.ttc
macOSSTHeiti(华文黑体)/System/Library/Fonts/STHeiti Medium.ttc`
LinuxWenQuanYi Micro Hei/usr/share/fonts/truetype/wqy/wqy-microhei.ttc

验证是否生效

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm# 查看已加载的字体列表
font_list = fm.findSystemFonts()
chinese_fonts = [f for f in font_list if any(keyword in f.lower() for keyword in ['hei', 'yahei', 'song', 'kai'])]
print("支持的中文字体路径:", chinese_fonts)

常见问题解决

  1. 字体路径错误

    • 确保 font_path指向真实的字体文件(如 Windows 下 simhei.ttf 路径为 C:/Windows/Fonts/simhei.ttf)。
  2. 字体缓存未更新

    • 清除 Matplotlib 缓存(运行以下代码后重启 Python):
      import matplotlib
      matplotlib._get_cachedir()  # 查看缓存路径,手动删除该目录
      
  3. 系统缺少中文字体

    • Linux 安装中文字体包:
      sudo apt-get install fonts-wqy-microhei  # 文泉驿微米黑
      

完整示例(带中文输出)

import matplotlib.pyplot as plt
import numpy as np# 设置全局中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 生成数据
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)# 绘制图形
plt.figure(figsize=(8, 4))
plt.plot(x, y, label='正弦曲线')
plt.title("中文标题示例")
plt.xlabel("X轴(角度)")
plt.ylabel("Y轴(振幅)")
plt.legend()
plt.grid(True)
plt.show()

通过上述方法,可以确保 pyplot 正确显示中文标题、标签和图例。

http://www.xdnf.cn/news/174925.html

相关文章:

  • Linux常用命令23——usermod
  • 关于堆栈指针的那些事 | bootloader 如何跳转app
  • react的 Fiber 节点的链表存储
  • 学生公寓限电模块控制柜是如何实现智能限电功能?
  • 【八股消消乐】发送请求有遇到服务不可用吗?如何解决?
  • 项目代码生成工具
  • 【技术追踪】基于扩散模型的脑图像反事实生成与异常检测(TMI-2024)
  • 【计算机视觉】CV实战项目- Four-Flower:基于TensorFlow的花朵分类实战指南
  • HarmonyOS NEXT:多设备的自由流转
  • 前端Vue项目处理跨域请求问题解决方案(后端未加cors),前端调后端
  • 深入探索Python Pandas:解锁数据分析的无限可能
  • go语言八股文(四)
  • WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换Java代码
  • 电池管理系统
  • Linux文件管理(3)
  • SpringMVC 静态资源处理 mvc:default-servlet-handler
  • 新增29个专业,科技成为未来主赛道!
  • 【机器学习驱动的智能化电池管理技术与应用】
  • 数字人接大模型第二步:实时语音同步
  • 在旧版本中打开Anylogic模型
  • Linux命令-iostat
  • 力扣4-最长公共前缀
  • 02_值相同、类型不同,用 equals() 比较为什么是 false?
  • 微信小程序自定义组件阻止click事件冒泡
  • centos7.9 - ollama 安装步骤
  • LLM应用于自动驾驶方向相关论文整理(大模型在自动驾驶方向的相关研究)
  • C++修炼:list模拟实现
  • LaTex、pdfLaTex、XeLaTex和luaLaTex的区别和联系
  • 打造企业级AI文案助手:GPT-J+Flask全栈开发实战
  • CodeGeeX 免费的国产AI编程助手