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

在Google Colab的ipywidget下拉菜单中使用LaTeX显示希腊符号失败求助

解决ipywidgets下拉菜单中LaTeX符号不渲染的问题

在ipywidgets下拉菜单中尝试用LaTeX显示θ等希腊符号时无法正常渲染,此前在matplotlib绘图中使用r'$\LaTeX$'语法可以正常编译符号,但下拉菜单中无效。原代码如下:

import ipywidgets as widgets
import numpy as np
import matplotlib.pyplot as plt

def cardioide_widget(a=4,cardioide=1):
  
  fig = plt.figure(figsize=(5,5))
  axp = plt.subplot(111, projection="polar")


  # 定义绘图变量
  def c(cardioide,theta):
    if cardioide == 1: 
      return a+a*np.cos(theta)
    elif cardioide == 2: 
      return a-a*np.cos(theta)
    elif cardioide == 3: 
      return a+a*np.sin(theta)
    elif cardioide == 4: 
      return a-a*np.sin(theta)

  theta = np.linspace(0, 2*np.pi, 200)

  # 极坐标绘图
  axp.plot(theta,c(cardioide,theta))
  
  # 设置极坐标轴范围
  axp.set_rmax(10.05)
    
  plt.show()

widgets.interact(cardioide_widget, a=(0.5,5.0,0.1),cardioide=[(r'$r = a + a cos(\theta)$',1),('r = a - a cos(theta)',2),('r = a + a sen(theta)',3),('r = a - a sen(theta)',4)]);

解决方法

ipywidgets的默认下拉菜单不会自动解析LaTeX字符串,需要使用widgets.Latex对象作为选项的标签,让Jupyter的MathJax渲染LaTeX公式。修改后的代码如下:

import ipywidgets as widgets
import numpy as np
import matplotlib.pyplot as plt

def cardioide_widget(a=4,cardioide=1):
  
  fig = plt.figure(figsize=(5,5))
  axp = plt.subplot(111, projection="polar")

  # 定义绘图变量
  def c(cardioide,theta):
    if cardioide == 1: 
      return a+a*np.cos(theta)
    elif cardioide == 2: 
      return a-a*np.cos(theta)
    elif cardioide == 3: 
      return a+a*np.sin(theta)
    elif cardioide == 4: 
      return a-a*np.sin(theta)

  theta = np.linspace(0, 2*np.pi, 200)

  # 极坐标绘图
  axp.plot(theta,c(cardioide,theta))
  
  # 设置极坐标轴范围
  axp.set_rmax(10.05)
    
  plt.show()

# 用Latex对象作为下拉选项的标签
cardioide_options = [
    (widgets.Latex(r'$r = a + a\cos(\theta)$'), 1),
    (widgets.Latex(r'$r = a - a\cos(\theta)$'), 2),
    (widgets.Latex(r'$r = a + a\sin(\theta)$'), 3),
    (widgets.Latex(r'$r = a - a\sin(\theta)$'), 4)
]

widgets.interact(cardioide_widget, a=(0.5,5.0,0.1), cardioide=cardioide_options);

说明

  • 将下拉菜单的选项标签替换为widgets.Latex实例,传入LaTeX格式的字符串(注意用\cos、\sin代替普通的cos、sin,以获得正确的数学符号渲染)
  • Jupyter环境默认加载MathJax,因此widgets.Latex可以自动解析并渲染LaTeX公式,包括希腊字母θ

内容的提问来源于stack exchange,提问作者Andrés López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:19:57