绘制大型数据集时出现显示问题(不必要的尖峰)

绘制大型数据集时出现显示问题(不必要的尖峰)

我有一个与大型数据集有关的问题pgfplots。我有以下最小示例:

\documentclass{scrartcl}

\usepackage{tikz}
\usepackage{pgf}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usetikzlibrary{plotmarks}
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

%\tikzset{external/system call={lualatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}
\tikzset{external/remake next}
\input{lw05.tikz}

\tikzset{external/remake next}
\input{lw01.tikz}

\tikzset{external/remake next}
\input{lw005.tikz}

\end{document}

lwXX.tikz可以找到这三个文件这里(还有.tex文件和结果)。

因为我知道 LaTeX 存在内存问题,所以我-buf-size=5000000在编译文件时使用了外部化选项和参数(我也尝试使用 LuaLaTeX 编译图形,可以通过取消注释来完成,但输出没有改变)

我现在的问题是,输出中出现了不必要的尖峰。我在图片中说明了这一点,可以在这里看到

这里 http://www.uni-ulm.de/~pqa62/pgfplots_large_dataset/illustration.png

这三幅图是在 TikZ 文件中使用不同线宽绘制的。如果你放大文件,.pdf你就会明白我的意思。此外,在第二张图片中会出现一些尖峰。

有人知道这些错误从何而来,以及如何避免它们吗?我几乎无法减少数据集的大小,因为基础数据是一个正弦函数乘以其他函数,而正弦的一个周期已经仅由大约 14 个数据点组成。我不想再减少这个数字了。

答案1

出现此问题的原因是线条的角非常紧,导致使用锐利的线条连接时线条会超出范围(参见当我使用“无标记”时,如何防止 pgfplots 错误地呈现线条?)。您可以使用line join=round. 来修复此问题,将该选项应用于所有图,而无需更改所有文件,您只需将以下内容添加到您的文档中即可:

\pgfplotsset{
    every axis plot post/.style={
        line join=round
    }
}

相关内容