8

I would like to reproduce a plot similar to this:

enter image description here

Credits to: PPLATO University

Each peak represents the binding energy of the electrons in each subshell. The energy values for each peak can be found at http://xdb.lbl.gov/Section1/Table_1-1.pdf. In these table the values are in eV, in the plot the values are expressed in joules. The y-axis show the number of electrons in each subshell. My efforts to draw that are:

\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    minor tick num=4,
    height= 35mm,
    width = 100mm,
    thick,
    scale=1.8,
    axis lines=center,
    xlabel=E (eV),
    ylabel=Number of photoelectrons, 
    ymax=7,
    ymin=0,
    xmax=3500,
    xmin=0,
    major tick length=.25cm,
    minor tick length=.1cm,
     xtick align=inside,
    tick style={semithick,color=black},
    ytick=\empty,
] 
\addplot[ultra thick,black!40!cyan] table[x=x, y=y]{
x       y
15.8    6
23.9    2
250     6
326     2
3206    2
};
\node[red,above] at (axis cs:3206,2){\small{A}};
\end{axis}
\end{tikzpicture}
\end{document}

The result are:

enter image description here

My main questions are:

  1. How can I suppress the y axis?
  2. How can I interrupt the x-axis?
  3. How can I define the base line to zero?
  4. How can I simulate all the scan only with the peaks localization.

Thanks to all.

1

1 Answer 1

6

It seems to be more easy to make sketch of spectra in pure TikZ:

enter image description here

MWE:

\documentclass[border=3mm,
               tikz,
               ]{standalone}
\usetikzlibrary{positioning}

    \begin{document}
    \begin{tikzpicture}[
every node/.style = {font=\small},
   specter/.style = {draw=red, very thick, rounded corners},
                        ]
\draw[specter]
    (0,0) -- (0.9,0) -- (1,1) node[above] {E}
          -- (1.1,0)
          -- (1.9,0) -- (2,1) node[above] {D}
          -- (2.1,0) -- (3.5,0);
\draw (0,-0.2) -- + (3.5,0);
\draw[double,double distance=1mm]
    (3.5,-0.3) -- + (0.1,0.2);
\foreach \i [count=\ix from 0] in {0,20,40,60}
    \draw (\ix,-0.1) -- + (0,-0.1) node[below] {\i};
\begin{scope}[xshift=36mm]
\draw[specter]
    (0,0) -- (1.9,0) -- (2,1) node[above] {C}
          -- (2.1,0)
          -- (2.9,0) -- (3,1) node[above] {B}
          -- (3.1,0) -- (4.5,0);
\draw (0,-0.2) -- + (4.5,0);
\draw[double,double distance=1mm]
    (4.5,-0.3) -- + (0.1,0.2);
\foreach \i [count=\ix from 1] in {200,400,600}
    \draw (\ix,-0.1) -- + (0,-0.1) node[below] {\i};
\end{scope}
\begin{scope}[xshift=82mm]
\draw[specter]
    (0,0) -- (2.4,0) -- (2.5,1) node[above] {A}
          -- (2.6,0) -- (3.3,0);
\draw[->] (0,-0.2) -- + (3.5,0)
    node[below left=4mm and 0mm] {E (eV)};
\foreach \i [count=\ix from 1] in {4800,5000,5200}
    \draw (\ix,-0.1) -- + (0,-0.1) node[below] {\i};
\end{scope}
    \end{tikzpicture}
\end{document}
2
  • Thanks a lot for your support. This is a nice solution for a particular element. I'm thinking to envelope this code inside a lua routines to trace any kind of element spectrum.
    – Jorge
    Nov 8, 2015 at 22:56
  • @Jorge, you are welcome. Happy (Lua)TeXing!
    – Zarko
    Nov 8, 2015 at 23:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .