【matplotlib】可视化解决方案——如何设置字符串的输出字体效果

概述

在 matplotlib 中如果想要控制输出字符串的字体效果,一般采用传递 Text 类关键字参数的方式进行设置,比方说传递 font-style='italic' 就是将字体改为斜体。任何接受 Text 类关键字参数的方法都可以使用上述方法进行设置,一个完整的 Text 类包含字体类别(family)、字体风格(style)、字体粗细(weight)、字体大小(size)、字体拉伸(stretch)和字体变种(variant)等属性,以下是 matplotlib 中支持设置字体属性的函数和方法:

  1. plt.text()
  2. plt.xlabel()
  3. plt.ylabel()
  4. plt.title()
  5. suptitle()

但是并不是每一个方法都支持传递字体相关的关键字参数,比方说 legend() 方法,我们只能传递字体大小,无法通过传递关键字参数的方式设置字体样式。

为了解决这个问题,我们可以另辟蹊径,我们不再执着于传递控制参数,而是在字体渲染上下功夫,这就是控制字符串字体效果的第二种方法,使用 LaTex 字体,将字符串包裹在一对美元符号中间,这样表示这个字符串按照 LaTeX 格式进行渲染,根据 LaTex 语法就可以设置我们想要的字体显示效果。这样做的好处如下:

  1. 可以为不同的字符串单独设置字体显示效果;
  2. 不受制于调用的方法。

示例

接下来,将以几组示例来展示不同情况下的字体输出效果:

import numpy as np  
import matplotlib.pyplot as plt  
  
  
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体  
plt.rcParams["axes.unicode_minus"] = False  # 该语句解决图像中的“-”负号的乱码问题  
  
x = np.linspace(0, 10, 1000)  
y = np.sin(x) * np.cos(x)  
plt.plot(x, y, ls='-', lw=2, color='c', alpha=0.3)  
  
plt.text(1, 0.0, r"\mathrm(Roman}效果:$\mathrm{Roman}\/(1st)$ ", fontsize=15)  
plt.text(1, 0.1, r"\mathit{Italic}效果:$\mathit{Italic}\/(2nd)$ ", fontsize=15)  
plt.text(1, 0.2, r"\mathtt{Typewriter}效果:$\mathtt{Typewriter}\/(3rd)$ ", fontsize=15)  
plt.text(1, 0.3, r"\mathfraktur{fraktur}效果:$\mathfrak{Fraktur}\/(4th) $", fontsize=15)  
plt.text(1, 0.4, r"\blackbord{blackbord}效果:$\mathbb{blackboard}\/(5th) $", fontsize=15)  
  
plt.show()

画图结果如下:

使用LateX字体

往期回顾

  1. 【matplotlib】可视化解决方案——如何正确使用颜色映射表
  2. 【matplotlib】可视化解决方案——如何调整轴脊位置
  3. 【matplotlib】可视化解决方案——如何设置坐标系计量方法
  4. 【matplotlib】可视化解决方案——如何正确使用文本注释
  5. 【matplotlib】可视化解决方案——如何调整计量单位和计量方法
  6. 【matplotlib】可视化解决方案——如何实现图形的动画效果
  7. 【matplotlib】可视化解决方案——如何正确使用plot方法
  8. 【matplotlib】可视化解决方案——如何向画布中添加坐标轴
  9. 【matplotlib】可视化解决方案——如何正确使用matplotlib颜色系统
  10. 【matplotlib】可视化解决方案——如何实现画布局部放大功能

文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!

你可能感兴趣的:(【matplotlib】可视化解决方案——如何设置字符串的输出字体效果)