Hallo,

ich versuche schon seit einiger Zeit das Spektrum des sichtbaren Lichts in TikZ zu zeichnen. Leider bin ich noch nicht weit gekommen. Mein Problem ist, dass ich auch das Spektrum von verschiedenen Elementen zeichnen möchte (z.B. https://de.wikipedia.org/wiki/Datei:Visible_spectrum_of_hydrogen.jpg)

Nun habe ich das colorwav package gefunden, mit dem Wellenlänen in RGB-Werte umgewandelt werden können. nur leider schaffe ich es nicht das spektrum zu zeichnen.

Ein einfacher Test dauert beim Kompilieren leider ewig und es kommt kein Ergebnis:

Open in Online-Editor
\documentclass{standalone}

 \usepackage{tikz}
 \usepackage{colorwav}
 \usepackage{xcolor}

 \begin{document}

\StoreRGBofWaveLength{\Rval}{\Gval}{\Bval}{700};
\definecolor{leftcol}{rgb}{\Rval, \Gval, \Bval};
\StoreRGBofWaveLength{\Rval}{\Gval}{\Bval}{550};
\definecolor{midcol}{rgb}{\Rval, \Gval, \Bval};
\StoreRGBofWaveLength{\Rval}{\Gval}{\Bval}{400};
\definecolor{rightcol}{rgb}{\Rval, \Gval, \Bval};   
\begin{tikzpicture}
    \draw[left color=leftcol, middle color=midcol, right color=rightcol] (0,0) rectangle (1,1);
\end{tikzpicture}
\end{document}

Es wäre super wenn mir jemand einen Tipp geben könnte, wie ich das Spektrum in Tikz zeichnen kann.

Gruß Thomas

gefragt 21 Apr '15, 14:10

lustiger_molch's gravatar image

lustiger_molch
856
Akzeptiert: 100%

@lustiger_molch Willkommen in der TeXwelt. In Deinem Code sind ein paar Syntaxfehle. middle color hat nur dann eine Auswirkung, wenn es nach right color und left color steht. Allerdings brauchst Du vermutlich sowieso mehr als nur drei Farben.

(21 Apr '15, 17:35) esdd

Zum einen musst Du den Befehl natürlich richtig schreiben, also \storeRGBofWavelength und zum anderen gehört sowohl nach diesem Befehl als auch nach \definecolor kein Semikolon hin.

Hier ist ein Vorschlag für Spektalllinien und das gesamte Lichtspektrum:

Open in Online-Editor
\documentclass[margin=5pt,varwidth]{standalone}
\usepackage{tikz}
\usepackage{colorwav}

\usepackage{etoolbox}
\renewcommand*{\do}[1]{
  \storeRGBofWavelength{\Rval}{\Gval}{\Bval}{#1}
  \definecolor{wl#1}{rgb}{\Rval, \Gval, \Bval}
}
\docsvlist{380,400,450,500,550,600,650,700,750,780}

\pgfdeclarehorizontalshading{spectrum}{2cm}{
  color(0cm)=(wl380);
  color({0.2cm})=(wl400); color(0.7cm)=(wl450);
  color(1.2cm)=(wl500); color(1.7cm)=(wl550);
  color(2.2cm)=(wl600); color(2.7cm)=(wl650);
  color(3.2cm)=(wl700); color(3.7cm)=(wl750);
  color(4cm)=(wl780)
}

\begin{document}
\begin{tikzpicture}
\fill(3.8,0)rectangle(7.8,2);
\foreach[evaluate={\x=\wl/100}]\wl in {400,450,...,750}
  \draw[line width=1pt,wl\wl] (\x,0)--(\x,2);
\end{tikzpicture}

\tikz\node[inner sep=0pt]{\pgfuseshading{spectrum}};
\end{document}

alt text

Permanenter link

beantwortet 21 Apr '15, 15:32

esdd's gravatar image

esdd
14.2k53251

bearbeitet 21 Apr '15, 15:37

Super, vielen Dank für die schnelle und gute Antwort. Ich sollte wohl mal häufiger etwas in LaTeX schreiben, um solche Fehler wie mit dem Semikolon zu vermeiden.

(22 Apr '15, 16:05) lustiger_molch
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492

Frage gestellt: 21 Apr '15, 14:10

Frage wurde angeschaut: 1,810 Mal

Zuletzt aktualisiert: 22 Apr '15, 16:05