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.

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}
  • 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 '15 at 22:56
  • @Jorge, you are welcome. Happy (Lua)TeXing! – Zarko Nov 8 '15 at 23:07

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.