2

A powerful tool to explain complex chains of transitions between the ro-vibronic level of a molecule is a Jablonsky diagram. The code below uses TikZ to draw the following diagram:

enter image description here

But in order to connect the information in the diagrams with the equation describing the processes is very helpful to use strong colors as in this picture:

enter image description here

I have a while trying to achieve the goal of making the arrows to looks like in the second example without success, even more, it would be great if is possible to mimic opacity of set of arrows in order to focus the attention on particular processes.

The figure will be embedded in a beamer slide.

Any suggestion will be very appreciated.

here is a minimal working example:

% Energy levels of a fluor molecule
% Author: David Fokkema
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,arrows,decorations.pathmorphing,intersections}
\usepackage[font={small,sf},labelfont={bf},labelsep=endash]{caption}
\usepackage{sansmath}
\begin{document}
\begin{center}
  \sansmath
  \begin{tikzpicture}[
    font=\sffamily,
    level/.style={black,thick},
    sublevel/.style={black,densely dashed},
    ionization/.style={black,dashed},
    transition/.style={black,->,>=stealth',shorten >=1pt},
    radiative/.style={transition,decorate,decoration={snake,amplitude=1.5}},
    indirectradiative/.style={radiative,densely dashed},
    nonradiative/.style={transition,dashed},
  ]
  \coordinate (sublevel) at (0, 8pt);

  % Singlet levels
  \coordinate (S00) at (0, -1);
  \coordinate (S01) at ($(S00) + (sublevel)$);
  \coordinate (S02) at ($(S00) + 2*(sublevel)$);
  \coordinate (S03) at ($(S00) + 3*(sublevel)$);
  \coordinate (S10) at (0, 3);
  \coordinate (S11) at ($(S10) + (sublevel)$);
  \coordinate (S12) at ($(S10) + 2*(sublevel)$);
  \coordinate (S13) at ($(S10) + 3*(sublevel)$);
  \coordinate (S20) at (0, 4.5);
  \coordinate (S21) at ($(S20) + (sublevel)$);
  \coordinate (S22) at ($(S20) + 2*(sublevel)$);
  \coordinate (S30) at (0, 6);

  % Draw main levels
  \foreach \level/\text in {00/0, 10/1, 20/2, 30/3}
    \draw[level] (S\level) node[left=20pt] {$S_\text$} node[left]
      {\footnotesize $S_{\level}$} -- +(4, 0);

  % Draw sublevels
  \foreach \sublevel in {01,02,03,11,12,13,21,22}
    \draw[sublevel] (S\sublevel) node[left]
      {\footnotesize $S_{\sublevel}$} -- +(4, 0);

  \node at (2, 6.5) {Singlet};

  % Triplet levels
  \coordinate (T00) at (5, 2);
  \coordinate (T01) at ($(T00) + (sublevel)$);
  \coordinate (T02) at ($(T00) + 2*(sublevel)$);
  \coordinate (T03) at ($(T00) + 3*(sublevel)$);
  \coordinate (T10) at (5, 3.5);
  \coordinate (T11) at ($(T10) + (sublevel)$);
  \coordinate (T12) at ($(T10) + 2*(sublevel)$);
  \coordinate (T13) at ($(T10) + 3*(sublevel)$);
  \coordinate (T20) at (5, 5);
  \coordinate (T21) at ($(T20) + (sublevel)$);

  % Draw main levels
  \foreach \level/\text in {00/0, 10/1, 20/2}
    \draw[level] (T\level) -- +(2, 0)
      node[right=20pt] {$T_\text$}
      node[right] {\footnotesize $T_{\level}$};

  % Draw sublevels
  \foreach \sublevel in {01,02,11,12,13,21}
    \draw[sublevel] (T\sublevel) -- +(2, 0) node[right]
      {\footnotesize $T_{\sublevel}$};

  \node at (6, 6.5) {Triplet};

  % Ionization level
  \draw[ionization] (0, 7.5) node[left=20pt] {$I_\pi$} -- +(7, 0);

  % Excitations
  \foreach \i/\from/\to in {1/S00/S10, 2/S00/S11, 3/S00/S12, 4/S00/S13,
                            5/S00/S20, 6/S00/S21, 7/S00/S22, 8/S00/S30}
    \draw[transition] ([xshift=\i*5pt] \from) -- ([xshift=\i*5pt] \to);

  % Radiative decay (fluorescence)
  \foreach \i/\from/\to in {1/S10/S00, 2/S10/S01, 3/S10/S02, 4/S10/S03}
    \draw[radiative] ([xshift=(\i+9)*5pt] \from) --
      ([xshift=(\i+9)*5pt] \to);

  % Nonradiative decay (internal degradation)
  \foreach \i/\from/\to in {1/S11/S10, 2/S12/S10, 3/S13/S10, 4/S20/S10,
                            5/S21/S10, 6/S22/S10, 7/S30/S10}
    \draw[nonradiative] ([xshift=(\i+9)*5pt] \from) --
      ([xshift=(\i+9)*5pt] \to);

  % Radiative decay (phosphorescence)
  %
  % There is some magic going on to prevent an irritating optical effect.
  % If the (start) coordinate is taken to be simply (Tstart), the wiggly
  % lines start at the T00 level.  Because of their differing lengths
  % however, the wiggles start to form a distracting pattern.  Therefore,
  % the lines are extended a bit (-\i*5pt) to show a pleasing effect.  They
  % are clipped so the transition still starts at T00.  If you want to
  % observe the optical effect, include this line at the correct location:
  %   \coordinate (start) at (Tstart);
  \begin{scope}
    \clip (S00) -- +(7, 0) |- (T00) -| (S00);
    \foreach \i/\level in {1/(S00), 2/(S01), 3/(S02), 4/(S03)} {
      \coordinate (Tstart) at ([xshift=\i*7pt] T00);
      \coordinate (end) at ($(Tstart) + (-135:4.5)$);
      \coordinate (start) at ($(Tstart)!-\i*5pt!(end)$);
      \path[name path=trans] (start) -- (end);
      \path[name path=ground] \level -- +(5, 0);
      \draw[indirectradiative,name intersections={of=trans and ground}]
        (start) -- (intersection-1);
    }
  \end{scope}

  % Labels (curious coordinates are due to manual placement adjustments)
  \node[left] at (5pt, 1.5) {\footnotesize Absorption};
  \node[right,align=center] at (13*5pt, 2cm - 5pt)
    {\footnotesize Fluorescence\\\footnotesize (fast)};
  \node[right,align=center] at (5cm + 5pt, 1cm - 5pt)
    {\footnotesize Phosphorescence\\\footnotesize (indirect, slow)};
  \node[right,fill=white,align=left] at ([xshift=12*5pt] S13)
    {\footnotesize Internal degradation};

  % Intersystem crossing
  \draw[nonradiative,name path=crossing] ($(S10) + (4, 0) - (5pt, 0)$) --
    ([xshift=5pt] T00);
  \coordinate (crosslabel) at (4.5, 3.1);
  \node[right,fill=white] at (crosslabel) {\footnotesize Intersystem crossing};
  \path[name path=arrow] (crosslabel) -- +(-145:1cm);
  \draw[->,>=stealth',shorten >=2pt,
    name intersections={of=crossing and arrow}]
    (crosslabel) -- (intersection-1);
  \end{tikzpicture}
  \captionof{figure}{Typical energy levels for $\pi$-orbitals of a fluor
    molecule. Spin singlet~($S$) and triplet~($T$) states are separated for
    clarity. The ionization level $I_\pi$ is shown at the top.  Excited states
    as well as vibrational sublevels (dashed horizontal lines) are shown. 
    Internal degradation is a non-radiative process, while fluorescence and
    phosphorescence are radiative decays.  The decay $T_0 \to S_0$, however,
    is indirect, by interactions with other molecules.}
\end{center}
\end{document}
  • 1
    Welcome to TeX.SE!, providing a minimal working example or your first attempt will be welcomed and increases the chance people got interested to help you faster. – SAM Jul 8 '16 at 5:25
  • Please take a look on How do I format my posts using Markdown for further questions. – SAM Jul 8 '16 at 5:47
  • Welcome to TeX.SX! It's better to include the diagrams rather than using links as they may disappear at some point. It would also be helpful to other if you cut your code down to a minimal working example because this makes it easier for people to help you. – Andrew Jul 8 '16 at 5:47
  • I don't see opacity on the arrows as you mentioned. What do you mean there? Also, I would have recommended styles e.g.\tikzset{excitation/.style={blue,->,>=stealth',shorten >=1pt}} for the excitation arrows, but it seems like you've mastered that. You'd just have to add the right parameters into them ;) – Jonathan Komar Jul 8 '16 at 5:58
3

This is a partial solution to get you going. This code was set up very nicely using styles, you can make a lot of adjustments by playing with the style block at the top of the tikzpicture environment. For example, if you change it to:

  \begin{tikzpicture}[
    font=\sffamily,
    level/.style={black,thick},
    sublevel/.style={black,densely dashed},
    ionization/.style={black,dashed},
    allarrows/.style={very thick,->,>=stealth',shorten >=1pt},
    transition/.style={allarrows, yellow, >=Triangle},
    radiative/.style={allarrows,red, Triangle[blue]-Circle, decorate,decoration={snake,amplitude=1.5}},
    indirectradiative/.style={radiative,densely dashed},
    nonradiative/.style={allarrows,blue,dashed},
  ]

then your picture becomes:

enter image description here

The tikz manual is very comprehensive. If you look through it you should be able to find out what to do. If you get stuck ask more focused questions.

Here is the full MWE:

\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,arrows,arrows.meta,decorations.pathmorphing,intersections}
\usepackage[font={small,sf},labelfont={bf},labelsep=endash]{caption}
\usepackage{sansmath}
\begin{document}
  \begin{tikzpicture}[
    font=\sffamily,
    level/.style={black,thick},
    sublevel/.style={black,densely dashed},
    ionization/.style={black,dashed},
    allarrows/.style={very thick,->,>=stealth',shorten >=1pt},
    transition/.style={allarrows, yellow, >=Triangle},
    radiative/.style={allarrows,red, Triangle[blue]-Circle, decorate,decoration={snake,amplitude=1.5}},
    indirectradiative/.style={radiative,densely dashed},
    nonradiative/.style={allarrows,blue,dashed},
  ]
  \coordinate (sublevel) at (0, 8pt);

  % Singlet levels
  \coordinate (S00) at (0, -1);
  \coordinate (S01) at ($(S00) + (sublevel)$);
  \coordinate (S02) at ($(S00) + 2*(sublevel)$);
  \coordinate (S03) at ($(S00) + 3*(sublevel)$);
  \coordinate (S10) at (0, 3);
  \coordinate (S11) at ($(S10) + (sublevel)$);
  \coordinate (S12) at ($(S10) + 2*(sublevel)$);
  \coordinate (S13) at ($(S10) + 3*(sublevel)$);
  \coordinate (S20) at (0, 4.5);
  \coordinate (S21) at ($(S20) + (sublevel)$);
  \coordinate (S22) at ($(S20) + 2*(sublevel)$);
  \coordinate (S30) at (0, 6);

  % Draw main levels
  \foreach \level in {0, 1, 2} {
    \draw[fill=blue!20](S\level 0) rectangle ([xshift=114]S\level 1);
  }
  \foreach \level/\text in {00/0, 10/1, 20/2, 30/3} {
    \draw[level] (S\level) node[left=20pt] {$S_\text$} node[left]
      {\footnotesize $S_{\level}$} -- +(4, 0);
    }

  % Draw sublevels
  \foreach \sublevel in {01,02,03,11,12,13,21,22}
    \draw[sublevel] (S\sublevel) node[left]
      {\footnotesize $S_{\sublevel}$} -- +(4, 0);

  \node at (2, 6.5) {Singlet};

  % Triplet levels
  \coordinate (T00) at (5, 2);
  \coordinate (T01) at ($(T00) + (sublevel)$);
  \coordinate (T02) at ($(T00) + 2*(sublevel)$);
  \coordinate (T03) at ($(T00) + 3*(sublevel)$);
  \coordinate (T10) at (5, 3.5);
  \coordinate (T11) at ($(T10) + (sublevel)$);
  \coordinate (T12) at ($(T10) + 2*(sublevel)$);
  \coordinate (T13) at ($(T10) + 3*(sublevel)$);
  \coordinate (T20) at (5, 5);
  \coordinate (T21) at ($(T20) + (sublevel)$);

  % Draw main levels
  \foreach \level/\text in {00/0, 10/1, 20/2}
    \draw[level] (T\level) -- +(2, 0)
      node[right=20pt] {$T_\text$}
      node[right] {\footnotesize $T_{\level}$};

  % Draw sublevels
  \foreach \sublevel in {01,02,11,12,13,21}
    \draw[sublevel] (T\sublevel) -- +(2, 0) node[right]
      {\footnotesize $T_{\sublevel}$};

  \node at (6, 6.5) {Triplet};

  % Ionization level
  \draw[ionization] (0, 7.5) node[left=20pt] {$I_\pi$} -- +(7, 0);

  % Excitations
  \foreach \i/\from/\to in {1/S00/S10, 2/S00/S11, 3/S00/S12, 4/S00/S13,
                            5/S00/S20, 6/S00/S21, 7/S00/S22, 8/S00/S30}
    \draw[transition] ([xshift=\i*5pt] \from) -- ([xshift=\i*5pt] \to);

  % Radiative decay (fluorescence)
  \foreach \i/\from/\to in {1/S10/S00, 2/S10/S01, 3/S10/S02, 4/S10/S03}
    \draw[radiative] ([xshift=(\i+9)*5pt] \from) --
      ([xshift=(\i+9)*5pt] \to);

  % Nonradiative decay (internal degradation)
  \foreach \i/\from/\to in {1/S11/S10, 2/S12/S10, 3/S13/S10, 4/S20/S10,
                            5/S21/S10, 6/S22/S10, 7/S30/S10}
    \draw[nonradiative] ([xshift=(\i+9)*5pt] \from) --
      ([xshift=(\i+9)*5pt] \to);

  % Radiative decay (phosphorescence)
  %
  % There is some magic going on to prevent an irritating optical effect.
  % If the (start) coordinate is taken to be simply (Tstart), the wiggly
  % lines start at the T00 level.  Because of their differing lengths
  % however, the wiggles start to form a distracting pattern.  Therefore,
  % the lines are extended a bit (-\i*5pt) to show a pleasing effect.  They
  % are clipped so the transition still starts at T00.  If you want to
  % observe the optical effect, include this line at the correct location:
  %   \coordinate (start) at (Tstart);
  \begin{scope}
    \clip (S00) -- +(7, 0) |- (T00) -| (S00);
    \foreach \i/\level in {1/(S00), 2/(S01), 3/(S02), 4/(S03)} {
      \coordinate (Tstart) at ([xshift=\i*7pt] T00);
      \coordinate (end) at ($(Tstart) + (-135:4.5)$);
      \coordinate (start) at ($(Tstart)!-\i*5pt!(end)$);
      \path[name path=trans] (start) -- (end);
      \path[name path=ground] \level -- +(5, 0);
      \draw[indirectradiative,name intersections={of=trans and ground}]
        (start) -- (intersection-1);
    }
  \end{scope}

  % Labels (curious coordinates are due to manual placement adjustments)
  \node[left] at (5pt, 1.5) {\footnotesize Absorption};
  \node[right,align=center] at (13*5pt, 2cm - 5pt)
    {\footnotesize Fluorescence\\\footnotesize (fast)};
  \node[right,align=center] at (5cm + 5pt, 1cm - 5pt)
    {\footnotesize Phosphorescence\\\footnotesize (indirect, slow)};
  \node[right,fill=white,align=left] at ([xshift=12*5pt] S13)
    {\footnotesize Internal degradation};

  % Intersystem crossing
  \draw[nonradiative,name path=crossing] ($(S10) + (4, 0) - (5pt, 0)$) --
    ([xshift=5pt] T00);
  \coordinate (crosslabel) at (4.5, 3.1);
  \node[right,fill=white] at (crosslabel) {\footnotesize Intersystem crossing};
  \path[name path=arrow] (crosslabel) -- +(-145:1cm);
  \draw[->,>=stealth',shorten >=2pt,
    name intersections={of=crossing and arrow}]
    (crosslabel) -- (intersection-1);
  \end{tikzpicture}
\end{document}
  • Thanks a lot for help, when I compile the code above, the attribute Triangle produces some errors like "Missing \endcsname inserted" and "Package pgf Error: Arrow end type "Circle" unknow" the same for the shape "Triangle" I am missing to load some package? which \usetikzlibrary you used? – Rubén Darío Guerrero Jul 8 '16 at 9:28
  • @RubénDaríoGuerrero Sorry, you need \usetikzlibrary{meta.arrows} in your preamble. – Andrew Jul 8 '16 at 10:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.