如何绘制两个 xticks 之间的坐标?

如何绘制两个 xticks 之间的坐标?

我想使用 pgfplot 绘制一些数据。这是我编写的代码:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.3}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  legend style={legend pos = north west, font=\footnotesize, draw=none},
  legend cell align=left,
  xtick=data,
  ytick={0,5,10,...,45},
  xticklabels={0,2,4,...,16,18},
  every axis label={font=\footnotesize},
  tick label style={font=\footnotesize},
  label style={font=\footnotesize},
  enlarge x limits=false,
  enlarge y limits=false]
  \addplot[lightgray, mark=*] table [x expr = \lineno, y = Time] {Data.dat};
  \addlegendentry{x}
  \end{axis}
\end{tikzpicture}
\end{document}

Data.dat文件内容如下:

 Points Time
   0        0
   2000     1.11
   4000     3.54
   6000     7.35
   8000     12.43
   10000    18.15
   12000    24.51
   14000    31.52
   16000    38.59
   17791    45.35

由于我是这个网站的新手,我无法发布输出图。在输出图中,最后一个点 (17791, 45.35) 错误地绘制在 x=18 和 y=45.35 处。
所以我的问题是:如何让最后一个点正确绘制在点 x=16 和 x=18 之间?

答案1

该点精确地绘制在x=17.791,处y=45.35;问题在于最后一个刻度使用的标签是错误的(您手动将其声明为 18,这会覆盖 的默认值17.8);问题不在于绘图:问题在于您放置 x 标签的方式(特别是最后一个)。

在以下示例中,我展示了一种可能的纠正方法:我让xtick=data(现在刻度及其标签会自动从表中选取)并使用extra x ticksextra xtick labels辅助蓝色网格来显示与 18 对应的点的实际位置;我还更改了使用的标记(我认为您使用的标记太大,可能会让人觉得它位于x=18),并且还使用了不同的颜色,只是为了便于可视化。如您所见,最后一个点的 x 坐标正好位于它应该在的位置(在为 绘制的红色垂直线的左侧一点x=18):

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.3}
\begin{document}
\begin{tikzpicture}[scale=1.2]
\begin{axis}[
  xmax=18500,
  legend style={legend pos = north west, font=\footnotesize, draw=none},
  legend cell align=left,
  xtick=data,
   ytick={0,5,10,...,45},
   extra x ticks={18000},
   extra x tick labels={},
   extra x tick style={grid=major,tick label style={rotate=90,anchor=east}},
   major grid style={color=red},
   every axis label={font=\footnotesize},
   tick label style={font=\footnotesize},
  label style={font=\footnotesize},
  enlarge x limits=false,
  enlarge y limits=false,
  scaled x ticks=base 10:-3
]
  \addplot[blue, mark=x] table  {Data.dat};
  \addlegendentry{x}
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

您可以使用明确的列表xmark

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.3}
\begin{document}
\begin{tikzpicture}[scale=1.2]
\begin{axis}[
  xmax=18500,
  ymax=46,
  legend style={legend pos = north west, font=\footnotesize, draw=none},
  legend cell align=left,
   xtick={0,2000,4000,6000,8000,...,14000,16000,18000},
   ytick={0,5,10,...,45},
  major grid style={color=red},
  every axis label={font=\footnotesize},
  tick label style={font=\footnotesize},
  label style={font=\footnotesize},
  enlarge x limits=false,
  enlarge y limits=false,
  scaled x ticks=base 10:-3
]
  \addplot[blue, mark=x] table  {Data.dat};
  \addlegendentry{x}
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容