保留 nan 值的轴刻度

保留 nan 值的轴刻度

我正在从表中读取值并使用 TikZ 绘制它们(下面给出了一个重现的最小示例)。当 x = 0.50 时,y =nan并且 x 轴上相应的刻度被删除。

我该如何保留这个蜱虫?

阴谋

\documentclass{article}

\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}
    \pgfplotstableread{
    X  Y
    0.50 nan
    0.55 2
    0.60 3
    }\mydata

    \begin{figure}
    \centering

    \begin{tikzpicture}

        \begin{axis}[
            xtick = {
                0.50, 0.55, 0.60
            },
        ]
        \addplot table{\mydata};

        \end{axis}
    \end{tikzpicture}
\end{figure}
\end{document}

答案1

pgfplotstable您可以使用作为数据处理功能扩展的包的功能直接从表中收集信息。并根据未过滤的表信息pgfplots进行设置。xmin=...,xmax=...

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepackage{pgfplotstable}
\usepackage{tikz}

\begin{document}
    \pgfplotstableread{
    X  Y
    0.50 nan
    0.55 2
    0.60 3
    }\mydata
    % Retrieve first X value in table
    \pgfplotstablegetelem{0}{X}\of{\mydata}
    % Set \truexmin as this value
    \pgfmathsetmacro{\truexmin}{\pgfplotsretval}
    % Retrieve number of rows in table
    \pgfplotstablegetrowsof{\mydata}
    % Store it as an integer named \numrows
    \pgfmathtruncatemacro{\numrows}{\pgfplotsretval-1}
    % Retrieve last X value in table
    \pgfplotstablegetelem{\numrows}{X}\of{\mydata}
    % Set \truexmax as this value
    \pgfmathsetmacro{\truexmax}{\pgfplotsretval}

    \begin{figure}
    \centering

    \begin{tikzpicture}

        \begin{axis}[
            xtick = {
                0.50, 0.55, 0.60
            },
            xmin = \truexmin,
            xmax = \truexmax,
            enlarge x limits=true,
        ]
        \addplot table{\mydata};

        \end{axis}
    \end{tikzpicture}
\end{figure}
\end{document}

在此处输入图片描述

相关内容