我有一个 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}