Matplotlib绘图的字体问题

记录一下,方便自己绘图的查阅,首先自己常用的自定义配置可以写到.mplstyle文件中,直接用plt.style.use('my.mplstyle')设置

中英文混用+非斜体文本

在中文论文中,可能出现中英文混用的标签等,参考Matplotlib 中英文及公式字体设置使用Matplotlib内置tex进行配置即可,(英文字体有限通常是times new roman受限于\mathrm命令,宋体+Times new roman(非斜体的文本或者单位)+公式)代码如下:

import matplotlib.pyplot as plt
from matplotlib import rcParams

config = {
    "font.family":'serif',
    "font.size": 20,
    "mathtext.fontset":'stix',
    "font.serif": ['SimSun'],
}
rcParams.update(config)

plt.title(r'宋体 $\mathrm{Times \; New \; Roman}\/\/ \alpha_i > \beta_i$')
plt.axis('off')
plt.savefig("usestix.png")

效果:

宋体+Times new roman(非斜体的文本或者单位)+公式

如果想使用其他英文字体的话,非斜体的单位就不能随意定制字体了,参考数学文本公式非斜体文本,可以使用\mathdefault{...} 或者 \mathregular{...}用与普通文本相同的字体设置单位字体,但是上标有些偏上,这个问题没有解决。

import matplotlib.pyplot as plt
from matplotlib import rcParams

config = {
    "font.family":'serif',
    "font.size": 20,
    "mathtext.fontset":'stix',
    "font.serif": ['Helvetica'],
}
rcParams.update(config)

             
plt.title(r'$\mathregular{Helvetica}\/\/ \alpha_i > \beta_i [\mathdefault{m^3/s}][\mathrm{m^3/s}]$')
plt.axis('off')
plt.savefig("usestix.png")

效果如下:

Helvetica字体

找到任意变换英文字体之后还需要补充更新。目前的这里提到的中英混用还只能限于【中文字体】+Times new roman。

### 设置 Matplotlib 使用 Times New Roman 字体 要在 Matplotlib 中使用 Times New Roman 字体进行绘图,可以通过以下方式实现: #### 方法一:手动安装字体Matplotlib 的 ttf 文件夹 将本地计算机中的 Times New Roman 字体文件复制到 Matplotlib 安装目录下的 `ttf` 文件夹中。具体路径可能因环境不同而有所差异,通常位于 `/home/user/anaconda3/envs/pytorch/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf` [^1]。 完成字体文件的放置后,需重新启动 Python 环境以使更改生效。 #### 方法二:动态加载字体并验证其可用性 通过编程的方式可以确认当前环境中是否已存在 Times New Roman 字体。以下是具体的代码示例: ```python import matplotlib.pyplot as plt from matplotlib import font_manager # 列出所有可用字体及其对应文件名 for font in font_manager.fontManager.ttflist: if 'Times' in font.name: # 过滤显示包含 "Times" 的字体名称 print(f"{font.name} - {font.fname}") ``` 上述脚本会打印出所有名为 “Times” 或类似的字体列表 [^2]。如果发现有 Times New Roman,则说明该字体已被成功识别。 #### 方法三:配置 rcParams 参数应用指定字体 一旦确认系统能够访问 Times New Roman 字体之后,就可以利用 Matplotlib 的 `rcParams` 来全局设定默认字体为 Times New Roman。下面是一个完整的例子展示如何操作: ```python import matplotlib.pyplot as plt from matplotlib import rcParams # 配置参数以启用 LaTeX 渲染风格 (可选),增强出版质量效果 plt.rc('text', usetex=True) # 设定字体族为 serif 并指明首选项为 Times New Roman rcParams['font.family'] = 'serif' rcParams['font.serif'] = ['Times New Roman'] # 创建简单图表测试字体设置是否有效 fig, ax = plt.subplots() ax.plot([0, 1], [0, 1]) ax.set_title(r'\LaTeX{} Example with Times New Roman Font') plt.show() ``` 以上代码片段不仅设置了字体属性还启用了 LaTex 支持以便获得更高质量的文字渲染 。 #### 注意事项 - 如果运行过程中遇到任何错误提示找不到所需字体,请返回检查第一步确保字体确实被正确加入到了 Matplotlib 资源库之中。 - 对于某些特殊字符或者数学表达式的处理建议配合使用 LaTex 格式化字符串来达到最佳视觉呈现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值