pgfplots:沿 x 轴的数字

pgfplots:沿 x 轴的数字

我正在尝试重新创建一些色谱图(具有制表符分隔的数据),但我需要获取沿 x 轴具有一些垂直分隔(线/框)的数字,如下所示 在此处输入图片描述

该图像是使用色谱系统附带的软件创建的,但生成的图形/图表相当丑陋,我现在只需要数字。谢谢!

答案1

我建议您使用extra x ticks选项。您可以使用 提供刻度位置列表extra x ticks={<list>},并使用 提供相应的标签extra x tick labels={<list>}。可以使用 指定额外刻度的样式every extra x tick/.style={...}。您可以使用“正常”刻度可用的所有选项,因此您可以设置x tick label as interval在两个刻度标记之间绘制标签,使用 控制长度major tick length,使用 控制刻度标记的样式every tick/.style。可以使用 设置标签的样式xticklabel style

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=0:30, samples=100,xtick align=outside, enlarge x limits=false, enlarge y limits=upper,
    max space between ticks=40,
    extra x ticks={0,4,...,30},
    extra x tick labels={1,...,7},
    every extra x tick/.style={
        xtick align=inside,
         x tick label as interval=true,
        major tick length=5ex,
        every tick/.style={
            densely dashed,
            red,
        },
        xtick pos=left,
        xticklabel style={
            red,
            anchor=south
        }
    },
    xlabel=Volume / ml,
    after end axis/.code={
        \node  at (rel axis cs:1,0) [anchor=south west, align=left, red] {Sample\\number};
    } 
]   
\addplot [blue, thick] {(abs(x-18)<3)*(1+cos((x-18)*60))};
\end{axis}
\end{tikzpicture}
\end{document}

答案2

可能类似这样的方法可以奏效(见下文)。它使用 pgfplots 和轴代码。这样你就可以使用轴坐标系。\foreach在 pgfmanual 中有说明。

\documentclass{article}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
after end axis/.code={%
\foreach \x / \lab in {-4/1,-3/2,-2/3,-1/4,0/5,1/6,2/7,3/8,4/9}%
{\draw[red,dashed] (axis cs: \x,0) -- (axis cs: \x,5);%
\node[xshift=10pt] at (axis cs:\x,3) {\lab};}
}
]
\addplot {x^2};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容