【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()

画图结果如下:

在这里插入图片描述

往期回顾

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪猪家的大猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值