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

Matplotlib设置log2对数X轴、埃单位标注及曲线翻转问题咨询

问题成因与修复方案

问题对应原因

  • \angstrom等LaTeX命令渲染失败:Matplotlib默认内置的mathtext轻量渲染引擎不支持\angstrom这类依赖siunitx等第三方LaTeX宏包的命令,此前写法能生效是因为当时的运行环境配置了调用本地完整LaTeX引擎渲染公式,当前环境要么未开启该配置,要么缺失对应LaTeX发行版依赖。
  • X轴未应用以2为底的对数刻度:现有代码未添加轴刻度类型配置,Matplotlib默认使用线性坐标轴。
  • 曲线反向显示效果未实现:目标效果是反转X轴的数值排布顺序(从大到小显示),并非交换X、Y轴数据,此前交换轴的操作逻辑错误。

修复步骤

  1. 公式渲染优先用无依赖方案:将\angstrom替换为Matplotlib内置mathtext原生支持的\AA(标准埃单位符号),\Delta等基础命令可直接保留,无需额外安装任何依赖即可正常渲染。如果必须使用\angstrom写法,可额外配置开启外部LaTeX渲染。
  2. 新增X轴刻度配置,指定对数刻度的底数为2。
  3. 调用坐标轴反转接口,将X轴数值反向排布,匹配目标曲线显示效果。

修复后完整可运行代码

import matplotlib.pyplot as plt

x = [0.35, 0.38, 0.47, 0.53, 0.6, 0.7, 0.84, 1.53]
y = [0, 0.36, 0.87, 2.84, 7.58, 11.25, 14.33, 19.64]

plt.plot(x, y)

# 设置X轴为以2为底的对数刻度
plt.xscale('log', base=2)
# 反转X轴,实现曲线反向效果
plt.gca().invert_xaxis()

# 用内置支持的\AA渲染埃单位,无需额外LaTeX依赖
plt.xlabel(r'Grid spacing [$\AA$]')
plt.ylabel(r'% error')
plt.title('x-y plot')

plt.show()

若需要使用\angstrom等需要宏包支持的LaTeX命令,在代码最开头添加如下配置即可(需本地提前安装TeX Live/MiKTeX等完整LaTeX发行版):

plt.rcParams['text.usetex'] = True
plt.rcParams['text.latex.preamble'] = r'\usepackage{siunitx}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:06:29