【科研绘图】Matplotlib 中文字符乱码(debug)

在使用 Matplotlib 绘图时,如果图中包含中文字符,可能会遇到中文无法正常显示的问题。这通常是因为默认的字体不支持中文。为了解决这个问题,你可以通过以下几种方法来设置 Matplotlib 使用支持中文的字体。

1. 设置 Matplotlib 使用支持中文的字体

Matplotlib 允许你自定义字体,通过 matplotlib.rcParams 来设置字体。

1.1 设置全局字体为支持中文的字体

可以通过 rcParams 设置字体为常见的中文字体(例如 SimHeiMicrosoft YaHeiSTHeiti 等)。

import matplotlib.pyplot as plt
import matplotlib# 设置中文字体
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'  # 或者 'SimHei', 'STHeiti' 等
matplotlib.rcParams['axes.unicode_minus'] = False  # 处理负号显示问题# 绘制包含中文的图表
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('中文标题')
plt.xlabel('横坐标')
plt.ylabel('纵坐标')
plt.show()

在上述代码中,我们设置了 font.family 为支持中文的字体 'Microsoft YaHei',并通过 axes.unicode_minus 解决负号显示问题。你可以根据自己系统中安装的字体进行选择。

1.2 查看系统中可用的中文字体

如果你不确定使用哪个字体,可以查看系统中安装的所有字体。以下是一个简单的代码片段,用于查看系统中所有可用的字体:

import matplotlib.font_manager as fm# 获取所有字体路径
font_paths = fm.findSystemFonts()# 打印所有可用字体
for font in font_paths:print(fm.FontProperties(fname=font).get_name())

运行此代码后,你可以查看你系统中安装的所有字体,并选择一个支持中文的字体。

2. 直接设置特定字体

如果你知道系统中有一个支持中文的字体文件(如 .ttf 文件),你也可以通过指定字体路径来加载它。

import matplotlib.pyplot as plt
from matplotlib import font_manager# 指定字体路径
font_path = '/path/to/your/font.ttf'  # 替换为你的字体路径
font_prop = font_manager.FontProperties(fname=font_path)# 设置字体
plt.title('中文标题', fontproperties=font_prop)
plt.xlabel('横坐标', fontproperties=font_prop)
plt.ylabel('纵坐标', fontproperties=font_prop)# 绘制图表
plt.plot([1, 2, 3], [1, 4, 9])
plt.show()

替换 font_path 为你所选中文字体文件的路径。

3. 处理负号显示问题

在某些系统中,负号(-)在坐标轴或标签中可能无法正确显示。通过设置 axes.unicode_minusFalse,可以解决这一问题:

import matplotlib.pyplot as plt
import matplotlib# 设置中文字体和负号处理
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'  # 设置中文字体
matplotlib.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# 绘图
plt.plot([1, 2, 3], [-1, -4, -9])
plt.title('负号测试')
plt.show()

4. 常见的中文字体

  • Windows 系统:
    • 'Microsoft YaHei'
    • 'SimHei'
    • 'NSimSun'
  • macOS 系统:
    • 'Heiti SC'
    • 'PingFang SC'
  • Linux 系统:
    • 'WenQuanYi Zen Hei'
    • 'AR PL UMing CN'

5. 检查字体是否安装

如果你选择的字体无法显示,可能是该字体在你的系统中没有安装。你可以通过操作系统的字体管理工具来安装相关字体。

总结

通过设置 matplotlib.rcParams 中的 font.familyaxes.unicode_minus,你可以轻松解决中文显示不正常的问题,并确保图表中的中文和负号正确显示。你也可以通过指定字体文件路径来使用其他特定字体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在CodeIgniter中添加或加载模型

在CodeIgniter框架中,模型(Model)是用于与数据库进行交互的重要组件。模型通常包含数据库查询、业务逻辑以及与数据库表相关的函数。以下是如何在CodeIgniter中添加或加载模型的步骤: 1. 创建模型文件 首先,你需要在…

神经网络归一化方法总结

在深度学习中,归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结,包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…

设计理念与数据反馈:面向火星熔岩管探索的跳跃机器人

随着人类对火星探索的深入,熔岩管作为潜在资源和居住地的科学价值受到广泛关注。然而,这些复杂且规模宏大的地下空间,对传统探测技术提出了严峻挑战。因此,本文介绍了一款专为火星熔岩管探索设计的跳跃机器人,其核心设…

MTK 展锐 高通 sensorhub架构

一、MTK平台 MTK框架可以分为两部分,AP和SCP。 AP是主芯片,SCP是协处理器,他们一起工作来处理sensor数据。 SCP 是用来处理sensor和audio相关功能和其他客制化需求的一个协处理理器,MTK SCP选择freeRTOS作为操作系统&#xff0c…

解决JWT解析CDN不稳定问题

最近在项目开发中,我遇到了一个令人头疼的问题:JWT解析所依赖的CDN源不稳定。这导致应用在某些情况下无法正常运行,严重影响了用户体验。经过一番探索和尝试,我最终通过手写解析函数的方式解决了这个问题。本文将分享我的解决过程…

SD NAND 的 SDIO在STM32上的应用详解

四.SDIO功能框图(重点) SDIO包含2个部分: ● SDIO适配器模块:实现所有MMC/SD/SD I/O卡的相关功能,如时钟的产生、命令和数据的传送。 ● AHB总线接口:操作SDIO适配器模块中的寄存器(由STM32控制SDIO外设),并产生中断和…

深入解析:用Scala验证身份证号码的合法性

引言 身份证号码,这个由18位数字组成的唯一标识,不仅包含了个人的出生年月日,还隐藏着性别信息,并且通过特定的算法来确保其唯一性和正确性。今天,我们将通过Scala编程语言,一步步揭开身份证号码的神秘面纱…

C语言数据结构学习:循环队列

C语言 数据结构学习 汇总入口: C语言数据结构学习:[汇总] 1. 循环队列 队列的博客:C语言数据结构学习:队列 循环队列会预先定义最大队列空间,然后定义一个数组,通过队列头和队列尾指针分别指向开头和结尾&…

leetcode-18-四数之和

题解: 代码:

go 结构体方法

在 Go 语言中,结构体方法是指附加到结构体类型上的函数。这些方法可以通过结构体的实例来调用。方法的接收者(receiver)指定了该方法属于哪个结构体类型。接收者可以是一个值类型或指针类型。 定义结构体方法 下面是如何为一个结构体定义方…

MySQL45讲 第29讲 如何判断一个数据库是不是出问题了?——阅读总结

文章目录 MySQL45讲 第二十九讲 如何判断一个数据库是不是出问题了?——阅读总结一、检测数据库实例健康状态的重要性二、常见检测方法及问题分析(一)select 1 判断法(二)查表判断法(三)更新判断…

探索Python的HTTP之旅:揭秘Requests库的神秘面纱

文章目录 **探索Python的HTTP之旅:揭秘Requests库的神秘面纱**第一部分:背景介绍第二部分:Requests库是什么?第三部分:如何安装Requests库?第四部分:Requests库的五个简单函数使用方法第五部分&…

指针的奥秘:深入探索内存的秘密

前言 在计算机编程的广阔天地中,指针作为一种独特的数据类型,它不仅是C语言的核心,也是理解计算机内存管理的基石。指针的概念虽然强大,但对于初学者来说,它常常是学习过程中的一个难点。本文旨在揭开指针的神秘面纱&a…

ffmpeg.wasm 在浏览器运行ffmpeg操作视频

利用ffmpeg.wasm,可以在浏览器里运行ffmpeg,实现对音视频的操作 参考链接: https://blog.csdn.net/jchsgwbr/article/details/143252044 https://gitee.com/CXBalCai/ffmpeg-template 其他参考 https://github.com/ffmpegwasm/ffmpeg.wasm https://b…

理解clickhouse 里的分区和分片键区别

文章目录 分片分区两分片,0副本的cluster 分片 CREATE TABLE logs_distributed AS logs_local ENGINE Distributed(cluster_name, -- 集群名称database_name, -- 数据库名称logs_local, -- 本地表名cityHash64(user_id) -- 分片键&#xf…

试玩hudi docke demo

官网链接: https://hudi.apache.org/docs/docker_demo 编译时要添加-Dscala-2.12 -Dspark3.5 两个参数,不然会报错一些包找不到 /root/study/programs/apache-maven-3.9.9/bin/mvn package -Pintegration-tests -DskipTests -Dscala-2.12 -Dspark3.5 d…

shell脚本(二)

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

多模态大型语言模型(MLLM)综述

目录 多模态大语言模型的基础 长短期网络结构(LSTM) 自注意力机制 基于Transformer架构的自然语言处理模型 多模态嵌入的关键步骤 TF-IDF TF-IDF的概念 TF-IDF的计算公式 TF-IDF的主要思路 TF-IDF的案例 训练和微调多模态大语言模型(MLLM) 对比学习 (CLIP, ALIG…

《智慧教育实时数据分析推荐项目》详细分析

一、项目介绍 1、背景介绍 在互联网、移动互联网的带动下,教育逐渐从线下走向线上,在线教育近几年一直处于行业的风口浪尖,那随着基础设施的不断完善,用户需求也发生不少变化,因此传统教育机构、新兴互联网企业都在探…

AI+云环境开发上线项目全流程(sealos)

AI云环境开发上线项目全流程 现在是AI技术爆炸💥的时代,我们作为开发自然需要跟上时代的潮流,今天就跟大家介绍一款云开发环境,并且搭配AI实现一行代码不用写,直接上线一个完整的项目(包含前后端&#xff0…