首页 > 其他分享 >matplotlib中文字体渲染

matplotlib中文字体渲染

时间:2023-12-04 22:01:41浏览次数:55  
标签:plt 渲染 fonts matplotlib 中文字体 time font

title: matplotlib中文字体渲染
banner_img: https://cdn.studyinglover.com/pic/2023/12/334c0c129076533308cbc7e03f8c55be.png
date: 2023-12-4 21:52:00
tags:
- 踩坑

matplotlib中文字体渲染

matplotlib 在画图例的时候不可避免的需要使用中文字体,但是有的时候电脑自带的字体不能渲染中文,这就需要我们自己解决字体问题。

首先用一个代码看一下系统里的字体哪些可以正常渲染中文字体

import matplotlib.font_manager as font_manager
import matplotlib.pyplot as plt
import time

def find_chinese_fonts(test_string):
    """
    This function tests each available font to see if it can render the given Chinese string
    without causing any rendering issues or noticeable delays.
    """
    fonts = font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
    working_fonts = []

    for font in fonts:
        try:
            prop = font_manager.FontProperties(fname=font)
            plt.figure()
            start_time = time.time()
            plt.text(0.5, 0.5, test_string, fontproperties=prop, ha='center', va='center')
            plt.close()
            end_time = time.time()
            render_time = end_time - start_time

            # Check if the rendering time is less than a certain threshold (e.g., 0.5 seconds)
            if render_time < 5:
                working_fonts.append(font)

        except Exception as e:
            # If there's an error rendering with this font, skip it
            continue

    return working_fonts

# Test string: "不卡顿"
test_string = "不卡顿"
fonts = find_chinese_fonts(test_string)
fonts

假设输出了 '/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf'

使用这个字体的代码就是

from matplotlib.font_manager import FontProperties

# 创建一个FontProperties对象,指定字体文件路径
font = FontProperties(fname='/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf')

# 绘制散点图
plt.scatter([1,2,3], [4,5,6], color="red")

# 添加图例,使用指定的字体
plt.legend(["例子"], prop=font)

# 显示图像
plt.show()

假如代码没找到可用字体呢?

手动下载字体。以下是一些中文字体的官方下载页面或者信誉良好的资源:

  1. 思源宋体(Source Han Serif):
    • 官方GitHub页面: Adobe Fonts
    • 选择您需要的语言子集,例如简体中文(SC),并下载相应的 OTF 文件。
  2. 思源黑体(Source Han Sans):
    • 官方GitHub页面: Adobe Fonts
    • 同样地,选择您需要的语言子集,并下载 OTF 文件。
  3. 文泉驿正黑(WenQuanYi Zen Hei):
    • 官方网站: WenQuanYi
    • 可以直接下载 TTF 文件。

下载完成后然后font = FontProperties(fname='/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf') 引入即可。

标签:plt,渲染,fonts,matplotlib,中文字体,time,font
From: https://www.cnblogs.com/studyinglover/p/17876119.html

相关文章

  • 永久解决matplotlib中文乱码问题
    永久解决matplotlib中文乱码问题1.拷贝Simhei.ttf字体文件至以下目录/root/software/anaconda3/envs/tensorflow/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf#根据自己系统酌情设置2.设置matplotlibrc文件(tensorflow)[root@bigdata~]#python>>>im......
  • matplotlib报错:AttributeError: module 'backend_interagg' has no attribute 'Figure
    使用本地python环境可以成功执行importpandasaspdimportmatplotlib.pyplotasplt#设置字体plt.rcParams['font.sans-serif']=['SimHei']#能正确显示负号plt.rcParams['axes.unicode_minus']=False#设置画布大小plt.figure(figsize=(11,8))#柱状图pat......
  • 图形渲染ISA指令集分析
    图形渲染ISA指令集分析1ISA定义就像任何语言都有有限的单词一样,处理器可以支持的基本指令/基本命令的数量也必须是有限的,这组指令通常称为指令集(instructionset),基本指令的一些示例是加法、减法、乘法、逻辑或和逻辑非。请注意,每条指令需要处理一组变量和常量,最后将结果保存在......
  • 使用样式表和 rcParams字典自定义 Matplotlib属性和样式
    3种方式自定义Matplotlib的属性和样式1.运行时通过rcParams字典动态设置2.使用样式表3. 更改matplotlibrc文件在运行时设置rcParams优先于样式表、样式工作表优先于文件matplotlibrc即1>2>31. 运行时通过rcParams字典动态设置通过字典matplotlib.rcParams,动态修改......
  • 图形渲染计算机硬件分析
    图形渲染计算机硬件分析1汇编语言汇编语言可以广泛地定义为机器指令的文本表示。在构建处理器之前,需要了解不同机器指令的语义,在这方面,对汇编语言的严格研究将是有益的。汇编语言专用于ISA和编译器框架,因此,汇编语言有许多优点。本节将描述不同汇编语言变体的基本原理,一些通用概......
  • 博客园:无限:waifu2x 无限渲染
    博客园:无限:waifu2x基于onnxruntime-web的waifu2x的实验性浏览器版本。它可以在浏览器上运行,而无需将图像上传到远程服务器。得益于这种方式让我可以通过嵌入博客园展示这个ai!!!开始使用:File(D&D)模型选择......
  • 渲染列表时过长造成卡顿,分批次渲染
    1//this.tableData=res.data;//直接赋值页面卡顿2//分批渲染3(function(arr,_this){4leti=0;5//合并列表6constmerge=(arr2,iTime)=>{7setTimeout(()=>{8_this.tableData=[..._this.tableData,...arr2];//赋值......
  • 普通unity项目升级URP管线渲染项目教程
    普通unity项目升级URP管线渲染安装URP插件创建URP渲染管线配置渲染管线升级素材的渲染管线方式一方式二资源链接安装URP插件点击Window选择PackageManager在出现的窗口左上角选择UnityRegistry搜索关键字Universal在出现的UniversalRP插件中下面点击Install创建URP渲染管线安......
  • echart 防止多次渲染 无数据时显示暂无数据 vue3
    //基于准备好的dom,初始化echarts实例constbarDOM:any=ref();varmyChart:any;letechartNull:any=null;//渲染echartconstinit_chart=()=>{if(myChart!=null&&myChart!=""&&myChart!=undefined){myChart.dispose();......
  • 图形渲染操作系统分析
    图形渲染操作系统分析迄今为止,博主在博客中阐述的内容包含渲染技术、性能优化、图形API、Shader、GPU、游戏引擎架构、图形驱动等等技术范畴的内容,这些内容都仅仅局限于单个应用程序之中,常常让人有”只缘身在此山中“的感叹。现在是时候更进一步了——进入操作系统(OperatingSyst......