我正在从表中读取值并使用 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}