我正在根据数据文件绘制分段线性曲线。我希望 x 域的起点和终点位于数据文件中 x 点之间的点,以便曲线的终点位于 y 轴的顶部或下方。
梅威瑟:
\documentclass[border=5]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{filecontents}{data.dat}
30, 74.296
31, 67.289
32, 61.924
33, 58.271
34, 56.347
35, 56.118
36, 57.504
37, 60.384
38, 64.61
39, 70.018
40, 76.436
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=left,
scaled ticks=false,
xtick=\empty,
ytick=\empty,
xmin=30,
xmax=39,
ymin=50,
ymax=68,
extra x ticks={32,36,37},
extra x tick labels={$r+1$,$r+Q$,\kern25mm{$r+Q+1$}},
clip=false,
]
\addplot[restrict x to domain=30:39] table [col sep=comma] {data.dat};
% arrow to x tick
\draw[->] (axis cs:37.6,49.3) -- (axis cs:37.1,49.7);
\end{axis}
\end{tikzpicture}
\end{document}
结果图:
我想要的更像是这样的:
这样做似乎很自然
\addplot[name path=gy,restrict x to domain=30.5:38.5]
但这只会截断最接近的实际数据点的 x 范围,即 31:38,这对于我的需要来说太窄了。
我通过设置创建了第二个图形clip=true
。但是这种方法的问题在于,x 轴下方的小箭头也会消失,因为它是在轴外绘制的。(或者也许有其他方法来获取该箭头?)
提前谢谢大家。
答案1
使用clip mode=individual
而不是clip=false
。这将激活绘图的剪切,但不会激活使用 绘制的其他内容(例如 )\draw
。