Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the LaTeX Forum.Oder frag auf Deutsch auf TeXwelt.de.

% This is a 'standalone' plot, so uses the standalone class\documentclass[border=5pt]{standalone}% A bit of font set-up: use Latin Modern and T1 encoding\usepackage[T1]{fontenc}\usepackage{lmodern}% For typesetting units\usepackage{siunitx}% Making plots, so load the pgfplots package of course!\usepackage{pgfplots}% Use the latest settings, so we don't get trapped with old bugs or% limited features.\pgfplotsset{compat = newest}% A short list of colours which run from pure blue to pure red:% eleven steps which is about right for this typo of plot.\pgfplotscreateplotcyclelist{blue to red}{%
color=blue\\%
color=red!10!blue\\%
color=red!20!blue\\%
color=red!30!blue\\%
color=red!40!blue\\%
color=red!50!blue\\%
color=red!60!blue\\%
color=red!70!blue\\%
color=red!80!blue\\%
color=red!90!blue\\%
color=red\\%}% Turn off the default comma separator for larger numbers\pgfkeys{
/pgf/number format/set thousands separator =
}% Create a couple of style to allow control of the settings.% First, create some very general settings for infra-red data.% Then, use that and additional settings to specify what happens% for a difference plot such as this one.\pgfplotsset{
infra-red/.style =
{% Chemists always plot infra-red data with the x-axis 'backward'.% Physicists work the other way: using a setting here makes it easy% to flip things round.
x dir = reverse,
% The labels apply to all plots of this type.
xlabel = $\tilde{\nu}/\si{\per\cm}$,
ylabel = $\mathrm{Milliabsorbance}$,
},
infra-red difference/.style =
{% The settings here inherit from the more general infra-red plot.
infra-red,
% Use the 'controlled' colour change.
cycle list name = blue to red,
% For difference plots, a line showing the zero is useful. This% is done by making an additinal grid line.
extra y ticks = 0,
extra y tick labels = \empty,
extra y tick style = { grid = major },
% Since this is a difference, the y-axis needs a modified label.
ylabel = $\Delta\mathrm{Milliabsorbance}$,
}}% Not everyone likes the 'axis box' effect, which can be turned off by% uncommenting these two lines. As such a change should (probably) apply to all% of the plots in a document, this is not tied to a particular plot style.\pgfplotsset{% axis x line* = bottom ,% axis y line* = left}\begin{document}\begin{tikzpicture}\begin{axis}%
[
% Choose the general settings
infra-red difference,
% Specify the x range
xmax = 2100,
xmin = 1800,
% Set the maximum y value: this is needed for the labels that will be% added below.
ymax = 3
]
% Use a \foreach to seleect data from the raw experimental data:% this makes it easy to plot only some of the lines.\foreach\yindex in {2,3,...,11}\addplot table[y index = \yindex] {\jobname.txt};
% Adding labels to the peaks: as the text and the horizontal positions% are the same, this can be automated. Notice that \foreach does not% work here!\pgfplotsinvokeforeach{1900,1948,1989,2031}%{% Each label is done as a 'pin' with the text rotated so it is % vertical. The height has to be set by hand (it's "1.3" here), and% to make sure the labels actually show up the ymax key was set% earlier, again using hand adjustment.\node[coordinate, pin = {[rotate=90]right:#1}] at
(axis cs:#1,1.3) {};
}\end{axis}\end{tikzpicture}\end{document}