缩小 pgfplots 中的 x 限制

缩小 pgfplots 中的 x 限制

我有一个 CSV 文件,其中包含需要打印的数据(简单散点图)。但是,我只需要在 x 轴上显示其中的一半(我需要隐藏图的右侧部分)。换句话说,我需要以下代码才能工作。

\begin{tikzpicture}
    \begin{axis}[
        enlarge x limits={value=-0.5,upper},  % <-- THE NEGATIVE VALUE DOES NOT WORK
        enlarge y limits={value=0.05,upper},
    ]
        \addplot table[x=x,y=y,col sep=comma]{table.csv};
    \end{axis}
\end{tikzpicture}

另一种理解方式是设置,xmax=0.5\pgfkeysvalueof{/pgfplots/xmax}因为我知道最小的 x 值是 0,但这当然不起作用,因为它会循环。

有什么建议吗?谢谢。

答案1

例如,您可以使用以下代码完成。希望这是不言自明的。如果不是,请告诉我,我会添加一些评论。

% used PGFPlots v1.18.1
    \begin{filecontents}[overwrite]{data.dat}
        x   y
        1   5
        2   3
        3   6
        4   4
        5   0
        6   1
    \end{filecontents}
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
        \pgfplotstableread[]{data.dat}{\mytable}
        \newcommand{\findMax}[1]{
            \pgfplotstablegetrowsof{\mytable}
            \pgfmathtruncatemacro\LastRowNo{\pgfplotsretval-1}
            \pgfplotstablesort[sort key={#1}]{\sorted}{\mytable}
            \pgfplotstablegetelem{\LastRowNo}{#1}\of{\sorted}
            \pgfmathsetmacro{\tempMax}{\pgfplotsretval}
        }
        \findMax{x}
    \begin{axis}[
        xmax = \tempMax/2,
    ]
        \addplot table {data.dat};
    \end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

答案2

我不知道自己在做什么,因此使用此答案需要您自担风险。数据和输出与@Stefan Pinnow 的答案相同。

\begin{filecontents}[overwrite]{data.dat}
x,   y
1,   5
2,   3
3,   6
4,   4
5,   0
6,   1
\end{filecontents}
    
\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
execute at end survey={\pgfmathparse{0.5*\csname pgfplots@xmax\endcsname} \expandafter\global\expandafter\let\csname pgfplots@xmax\endcsname=\pgfmathresult},
enlarge x limits={false,lower},
]
\addplot table[x=x, y=y, col sep=comma]{data.dat};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容