y 轴从 0 到 1 的距离小于从 1 到 2 或从 2 到 3 的距离

y 轴从 0 到 1 的距离小于从 1 到 2 或从 2 到 3 的距离

我发现很奇怪,第一张图片第一象限中的点https://tex.stackexchange.com/a/310508/132405与原点不对齐(红线没有经过红点):

在此处输入图片描述

代码(来自 Torbjørn T.)是:

\documentclass{article}

\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
    \begin{axis}    [
        axis lines = {center},
        width = {0.6\linewidth},
        ylabel = {$y$},
        xlabel = {$x$},
        ytick distance = {2},
        minor y tick num = {1}
        ]

    \addplot    [
                mark = x, domain= -3:4
                ]
                {abs(x)};
\end{axis}
\end{tikzpicture}

\end{document}

该代码是正确的,但是显示了错误。

如果我们仔细观察,我们会发现 y 轴上 0 和 1 之间的距离小于 y 轴上 1 和 2 之间或 2 和 3 之间的距离:请参见下图中的石灰线(所有线的高度均相同):

在此处输入图片描述

放大原点:

在此处输入图片描述

点(x 标记)必须位于棕色线上。

有解决方法吗?我读到https://github.com/pgf-tikz/pgfplots/issues/400#issuecomment-893904915维护者几乎不活跃。

在等待软件包修复的过程中,我们如何知道这个严重的错误何时发生(对于绘图工具来说,这是一个严重的错误)以及用什么来代替?

Bug 打开于https://github.com/pgf-tikz/pgfplots/issues/423

答案1

这不是一个错误,只是一个误解 ;-)。在这种情况下,打印点的值的技巧非常有用;在手册中搜索和point metanodes near coords但基本思路是这样的:

\documentclass{article}

\usepackage{pgfplots}\pgfplotsset{compat=1.18}
\begin{document}

\begin{tikzpicture}
    \begin{axis}    [
        axis lines = {center},
        width = {0.6\linewidth},
        ylabel = {$y$},
        xlabel = {$x$},
        ytick distance = {2},
        minor y tick num = {1}
        ]

    \addplot    [
                mark = x, domain= -3:4,
                nodes near coords, point meta=y,
                nodes near coords style={color=red, font=\tiny, anchor= east},
                ]
                {abs(x)};
\end{axis}
\end{tikzpicture}

\end{document}

这使:

在此处输入图片描述

很明显发生了什么:的最小值y是 0.0833,这是x轴所在的位置,如手册第 273 页所述:

在此处输入图片描述

顺便说一句,texdoc pgfplots显示“修订版 1.18.1(2021/05/15)”,因此它维护得很好(尽管如果您不使用密钥,compat您要求的是旧的实现,正如警告告诉您的那样)。

相关内容