pgfplots:如何在数据点之间设置 x 域?

pgfplots:如何在数据点之间设置 x 域?

我正在根据数据文件绘制分段线性曲线。我希望 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

相关内容