You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib中LaTeX分段函数标签显示异常问题求助

解决Matplotlib中LaTeX分段函数图例显示异常的问题

问题根源

  • Matplotlib开启TeX渲染时,默认未加载amsmath包,导致cases环境的格式解析异常
  • 原代码分段条件存在逻辑矛盾:函数中以input_time≥50作为分支切换点,但图例标注的是t≥20,二者需统一
  • 原cases环境写法不符合amsmath规范,未正确使用&实现对齐

修复方案

  1. 加载amsmath包:在Matplotlib配置中添加TeX预加载语句,确保cases环境能正常解析
  2. 修正逻辑错误:将图例中的t≥20改为t≥50,与函数逻辑保持一致
  3. 规范cases语法:用&分隔表达式和条件,实现内容正确对齐,让大括号完整覆盖所有分支

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

# 配置TeX环境,预加载amsmath包
mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsmath}'

X_2a = np.arange(0.0, 100, 0.1)

def piecewise_function(input_time):
    model_output = np.where(50 > input_time, np.sqrt(input_time), input_time**1.01 - 44.9237)
    return model_output

# 使用规范的cases语法,&实现条件与表达式对齐,修正逻辑错误
plt.plot(X_2a, piecewise_function(X_2a), 
         label=r'$m_e=\begin{cases} \sqrt{t}, & t < 50 \\ t^{1.01} - 44.9237, & t \ge 50 \end{cases}$')
plt.legend()
plt.show()

关键细节说明

  • text.latex.preamble参数用于添加LaTeX前置包,加载amsmath是cases环境正常工作的前提
  • cases环境中的&是对齐标记,通过它分隔表达式和条件,既能保证两行内容对齐,也能让大括号完整包裹所有分支
  • 修正分段条件逻辑后,图例标注与函数行为一致,避免出现歧义

内容的提问来源于stack exchange,提问作者Arthur Conlan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:19:54