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

使用tikzplotlib导出LaTeX图表时PGF Math Error报错的解决方法

解决tikzplotlib导出LaTeX代码含"--"导致的编译错误

问题根源

导出的--是tikzplotlib对缺失/无效数值的默认输出,但LaTeX的PGFPlots无法识别该符号,因此需要将其替换为LaTeX支持的nan(或直接移除对应行)。

解决方案

1. 预处理原始数据(推荐)

从根源上替换数据中的无效值为numpy.nan,tikzplotlib会自动将nan转换为PGFPlots可识别的格式:

import numpy as np
import pandas as pd

# 假设数据存储在DataFrame中,替换无效值为nan
df = pd.read_csv("your_data.csv")
df = df.replace(["--", ""], np.nan)  # 根据实际无效值类型调整

# 用处理后的DataFrame生成图表,再导出
# ...(你的绘图代码)

pgfplotsset = {'compat=newest', 'mark size = 1.73'}
tikzplotlib.save(r'C:\Users\...\mytikz.tex',
                 encoding='utf8', axis_height='7.03cm', axis_width='9.34cm', textsize=10.0,
                 extra_axis_parameters=pgfplotsset, strict=True)

2. 自动修改导出的TeX文件

如果无法修改原始数据,可在导出后用Python自动替换文件中的--为nan:

import tikzplotlib

output_path = r'C:\Users\...\mytikz.tex'
pgfplotsset = {'compat=newest', 'mark size = 1.73'}

# 导出tikz代码
tikzplotlib.save(output_path,
                 encoding='utf8', axis_height='7.03cm', axis_width='9.34cm', textsize=10.0,
                 extra_axis_parameters=pgfplotsset, strict=True)

# 替换所有"--"为"nan"
with open(output_path, 'r', encoding='utf8') as f:
    tex_content = f.read()
tex_content = tex_content.replace('--', 'nan')

with open(output_path, 'w', encoding='utf8') as f:
    f.write(tex_content)

3. 使用tikzplotlib的自定义行回调函数

利用tikzplotlib的table_row_callback参数,在导出时直接处理每行数据:

import tikzplotlib

def replace_dashes(row):
    # 将行中的"--"替换为"nan"
    return row.replace('--', 'nan')

pgfplotsset = {'compat=newest', 'mark size = 1.73'}
tikzplotlib.save(r'C:\Users\...\mytikz.tex',
                 encoding='utf8', axis_height='7.03cm', axis_width='9.34cm', textsize=10.0,
                 extra_axis_parameters=pgfplotsset, strict=True,
                 table_row_callback=replace_dashes)

验证

修改后,TeX文件中的-- --会被替换为nan nan,PGFPlots编译时会自动忽略这些缺失值,不会抛出解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:47:37