如何在Matplotlib中以编程方式构建LaTeX标签?
解决Matplotlib动态构建LaTeX标签的问题
你之前的写法错误地将格式化字符串与原始字符串标记混在一起,导致生成的标签是带r'...'的文本,而非Matplotlib能解析的LaTeX表达式。以下是两种可行的解决方式:
方法一:使用原始格式化字符串(推荐)
直接用rf""组合原始字符串与格式化功能,这样\pi无需额外转义,同时能动态替换变量:
function = 'sin' my_label = rf"$2\pi*{function}(x)$" current_ax.set_ylabel(my_label)
方法二:普通格式化字符串转义反斜杠
如果不用原始字符串,需要将\pi中的反斜杠转义为\\pi:
function = 'sin' my_label = f"$2\\pi*{function}(x)$" current_ax.set_ylabel(my_label)
完整修改后的示例代码
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0., 2.* np.pi, 20) y = 2. * np.pi * np.stack((np.sin(x), np.cos(x))) fig, ax = plt.subplots(2, 1, figsize=(6, 8), dpi=200, constrained_layout=True) # 动态生成sin标签 function = 'sin' current_ax = ax[0] current_ax.plot(x, y[0, :], '--.k', markersize=5, alpha=0.5) current_ax.set_xlabel('x') current_ax.set_ylabel(rf"$2\pi*{function}(x)$") # 动态生成cos标签 function = 'cos' current_ax = ax[1] current_ax.plot(x, y[1, :], '--.k', markersize=5, alpha=0.5) current_ax.set_xlabel('x') current_ax.set_ylabel(rf"$2\pi*{function}(x)$") plt.show()
内容的提问来源于stack exchange,提问作者DeltaIV
相关产品推荐
相关产品推荐

