Matplotlib:如何使包含下标的plt.text文本(含下标)整体显示为斜体?
Matplotlib:如何使包含下标的plt.text文本(含下标)整体显示为斜体?
我太懂你这种头疼的感觉了——想用plt.text输出带下标的文字,还得让包括下标在内的所有内容都变成斜体,试了好几种方法,结果下标就是纹丝不动,完全不跟着变斜体,真的挺闹心的!
其实问题的关键在于:matplotlib对普通文本和LaTeX渲染的文本是分开处理的:
- 当你用
$...$包裹内容时,这部分是交给matplotlib内置的LaTeX引擎单独渲染的; - 而
plt.text的style='italic'参数,只能控制非LaTeX部分的普通文本,根本管不了$...$里的内容。
你之前试的$_{\it 1}$或者$_{\mathit{1}}$,只是给下标单独加了斜体,不仅麻烦,还没法统一控制整段文字的格式。
那正确的解决方法是什么呢?其实很简单——把整段要显示的文本(包括$...$部分)都放进LaTeX的斜体命令\textit{}里,让LaTeX统一渲染整段内容的斜体样式。
给你修改好的代码,直接运行就能看到效果:
import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(2,2)) # 把整段文本(包括LaTeX下标部分)用\textit{}包裹 text0 = r'\textit{Base: $c f_1$}' text1 = r'\textit{Method 1: $c f_{1}$}' text2 = r'\textit{Method 2: $c f_{1}$}' text3 = r'\textit{Method 3: $c f_{1}$}' plt.text(0,0.2, text0) plt.text(0,0.4, text1) plt.text(0,0.6, text2) plt.text(0,0.8, text3) plt.axis('off') plt.show()
这样一来,不管是前面的普通文字,还是$...$里的下标,都会被LaTeX统一渲染成斜体,完全符合你想要的“整体斜体”效果!
备注:内容来源于stack exchange,提问作者Barry Zheng
相关产品推荐
相关产品推荐

