chemfig und TikZ

Jeder, der schon einmal das großartige Paket chemfig verwendet hat, weiß, dass es die Strukturformeln mit der Hilfe von TikZ zeichnet. Darüber muss man allerdings bei der Verwendung nicht Bescheid wissen – es sein denn, man möchte mehr als nur Formeln zeichnen. Elektronenverschiebungspfeile zum Beispiel. Oder Rahmen um eine Formel in einem Schema. Oder …
Weiterlesen

Ein Kommentar

Baum von Wahrscheinlichkeiten

Der folgende Graph zeigt ein einfaches Baumdiagramm, für die Wahrscheinlichkeiten beim Münzwurf.

Häufige auftretenden Styles wurden dabei allgemein definiert. Der Knackpunkt war hier ein wenig die Färbung der Wurzel, des ‘circle split’ mit der background-Bibliothek.

 

\documentclass[varwidth, margin=5pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},  germandbls={ß}}
\usepackage{tikz}
\usetikzlibrary{calc, shapes, backgrounds}
\usepackage{amsmath, amssymb}
 \pagecolor{olive!50!yellow!50!white
}
%===========
\begin{document}
%===========
\tikzset{
zahl/.style={fill=blue!70!yellow, text=black, label=center:\textsf{\Large Z}},
kopf/.style={fill=orange!90!blue, label=center:\textsf{\Large K}}
}
\begin{tikzpicture}
[scale=1.5, transform shape,
thick,
every node/.style={draw, circle, minimum size=10mm
},
grow=down,  %Zeichenrichtung
level 1/.style={sibling distance=3cm},
level 2/.style={sibling distance=4cm},
level 3/.style={sibling distance=2cm},
level distance=1.25cm]

\node[fill=gray!40, shape=rectangle, rounded corners, minimum width = 6cm] {Münzwurf}
child{ node[shape=circle split,draw,line width=1pt,minimum size=10mm,inner sep=0mm, font=\sffamily\large, rotate=30]  (Start) { \rotatebox{-30}{K} \nodepart{lower}  \rotatebox{-30}{Z}}
 child {node[kopf] (A) {}
         child {node[kopf] (B) {}}
        child {node[zahl] (C) {}}
}
 child {node[zahl] (D) {}
          child {node[kopf] (E) {}}
          child {node[zahl] (F) {}}
 }
};

%Füllung der Wurzel = "Start"
\begin{scope}[on background layer, rotate=30]
    \fill[kopf] (Start.base) ([xshift=0mm]Start.east) arc (0:180:5mm)--cycle;
    \fill[zahl] (Start.base) ([xshift= 0pt]Start.west) arc (180:360:5mm)--cycle;  
\end{scope
}

%Beschriftung
\path (Start) -- (A) node [draw=none,  near start, left] {$0.5$};
\path (A) -- (B) node [draw=none,  near start, left] {$0.5$};
\path (A) -- (C) node [draw=none,  near start, right] {$0.5$};
\path (Start) -- (D) node [draw=none,  near start, right] {$0.5$};
\path (D) -- (E) node [draw=none,  near start, left] {$0.5$};
\path (D) -- (F) node [draw=none,  near start, right] {$0.5$
};
%
\node[below=11pt, draw=none, name=X] at (B) {$0.25$};
\node[below=11pt, draw=none] at (C) {$0.25$};
\node[below=11pt, draw=none, name=Y] at (E) {$0.25$};
\node[below=11pt, draw=none] at (F) {$0.25$
};
%
\draw[densely dashed, rounded corners, thin] (X.south west) rectangle (Y.north east);

\end{tikzpicture}
%===========
\end{document}
%===========
Namenlos-11a
Ein Kommentar

TikZ und Seitenlayout

Mit TikZ lassen sich nicht nur Graphiken erstellen. Man kann es auch anderweitig vielfältig einsetzen.

Zum Beispiel erlaubt das Paket pgfopts, dass man die Power von pgfkeys, dem Key-Management von TikZ/pgf, auch für Paketoptionen einsetzen kann. Ein Beispiel dafür ist mein Paket bohr, das TikZ nicht nur dafür verwendet. Vielleicht ist das bei Gelegenheit einen eigenen Post wert.

Heute möchte ich aber ein Beispiel dafür zeigen, wie man mit TikZ auch ein Buchlayout gestalten kann. Dafür nehme ich meine Antwort zur Frage Headers and page numbers in external borders auf TeX.sx als Basis. Die Frage dort war, wie man ein Layout wie das folgende erreichen kann:

layout
Weiterlesen

Kommentare: 9

3D-Plots beschneiden

Wenn Funktionswerte zu groß werden, können wir die grafische Darstellung beschneiden. Wie machen wir es geschickt, damit es auch noch gut aussieht? Wenn wir beispielsweise einen Surface-Plot zeichnen, die Oberfläche der Funktion durch sogenannte Patches darstellen, kann es etwas gezackt aussehen, statt gerade. Wie schlimm, richtet sich nach Anzahl der Samples, also der Teilpunkte: wählen wir mehr, so wird es feiner.

Schauen wir es uns am Beispiel an. Wir plotten einen Kegel und beschränken den Maximalwert der Höhe durch die Option restrict z to domain:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    grid,
    domain=-5:5, y domain=-5:5,
    xmin=-10, xmax=10,
    ymin=-10, ymax=10,
    zmin=0,
    restrict z to domain=0:5
]
    \addplot3 [surf] {sqrt(x^2 + y^2};
  \end{axis}
\end{tikzpicture}
\end{document
}
Kegel in 3D

Ziemlich ausgefranst. Wir können anders beschneiden durch eine Variante der genannten Option mit *, also restrict z to domain*=0:5, das wird glatter:

Weiterlesen

Schreibe einen Kommentar

Zweifarbige Buchstaben

ZweifarbigesBMitunter werden in Foren lustige Sachen gewünscht: einmal brauchte jemand ein zweifarbiges Zeichen, die linke Seite sollte grün und die rechte rot sein.

Für das zweifarbige Zeichen wird ein Befehl \bicolorletter mit einem optionalen Argument für die Farben und einem obligatorischen für den Buchstaben definiert.

Der Befehl reserviert zunächst mit \phantom den benötigten Platz und fügt dann mit Hilfe von \clip die beiden farbigen Buchstabenhälften ein. Die beiden Farben können dabei über Stile festgelegt und geändert werden.

\documentclass[margin=5mm,varwidth]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\tikzset{
   bclleft/.style={.},
   letter left/.style={bclleft/.append style={#1}},
   bclright/.style={.},
   letter right/.style={bclright/.append style={#1}},
}
\newcommand\bicolorletter[2][]{%
   \tikz[baseline=(n.base),inner sep=0pt,outer xsep=0pt,#1]{
     \node(n){\phantom{#2}};
     \foreach \a/\c in {west/bclleft,east/bclright}{
       \begin{scope}
         \clip(n.south)rectangle(n.north \a);
         \node[\c]at(n){#2};
       \end{scope}
     }}}
\begin{document}
\tikzset{letter left=green,letter right=red}
Erst ein grün-roter Buchstabe: \bicolorletter{B}
\par
und dann ein orange-brauner:
\bicolorletter[letter left=orange,letter right=brown]{B}
\par
und wieder ein grün-roter: \bicolorletter{M}
\end{document
}

 

ZweifarbigeBuchstaben

Wie man in dem Code sieht, kann zum einen die Farbkombination grün-rot mit
Weiterlesen

Kommentare: 3

Feature request mit Blume

Sag’s mit einer Blume, und Dein Ansinnen wird freundlicher aufgenommen.

Das tat ich spontan mit einem feature request an den Autor von pgfplots. Nun weiß ich, dass er generell gern auf Fragen antwortet und Neues implementiert und das Paket sehr gut pflegt. Umso mehr Grund für ein Blümchen. :-)

Wenn ich Funktionen mit Polarkoordinaten parametrisiere, insbesondere mit Rotations-Symmetrie, habe ich oft mit Winkelfunktionen zu tun, also mit den trigonometrischen Funktionen wie beispielsweise Sinus und Cosinus. Winkel kann man in Grad angeben, den Vollkreis von 0 bis 360 Grad durchlaufen, oder man verwendet Radiant, entsprechend von 0 bis 2*pi. pgfplots verwendet Grad. Wenn ich das weiß, gebe ich den Quellbereich eben in Grad an und gut ist es, wie in dieser ersten Blüte:

Funktion in 3D

Der Code hierfür ist:
Weiterlesen

Schreibe einen Kommentar

Dynamische Füllhöhe eines Glases

Meine ersten Schritte in Foren habe ich vor ungefähr 5 1/2 Jahren auf dem Matheplaneten gemacht. In einer meiner ersten Antworten sollte damals ein Befehl definiert werden, mit dem ein unterschiedlich hoch gefülltes Wasserglas gezeichnet werden kann und der deshalb die relative Füllhöhe, also einen Wert zwischen 0 und 1, als Argument erwartet:

\Glas{<relative fuellhoehe>}

Der Pfad für das leere Glas war bereits vorgegeben:

\draw[very thick] (0,2) -- (0.25,0) -- (1.5,0) -- (1.75,2);

glasleer

Zur besseren Übersicht habe ich hier ein Gitternetz (Linienabstand: 0.25 cm) darunter gelegt und den Koordinatenursprung markiert.

Damaliger Lösungsvorschlag:
Weiterlesen

Kommentare: 2

Dynamische Systeme, Bifurkationen, prozedurale Welten

Nachdem ich im vorangehenden Post erwähnte, dass ich auch pgfplots zur grafischen Ausgabe nutze, möchte ich hier ein paar Beispiele nennen.

Als Vorteile von pgfplots gegenüber Basis-TikZ nutze ich hier:

  • einfaches Plotten mit 3D-Koordinaten und Schrägbildansicht
  • Darstellung zugehöriger Koordinatenachsen
  • Verwenden von Farbverläufen
  • Einlesen von Dateien, falls die Daten extern berechnet wurden.

In jedem Fall kann man hier wieder Lua zum Berechnen der Daten verwenden. Lua generiert uns die TeX-Befehle zur Ausgabe, die in der pgfplots-Achsen-Umgebung verarbeitet werden.

Hier die Beispiele, einfach draufklicken, um zur zugehörigen Diskussion auf TeXwelt zu gelangen, wo man den vollständigen Quellcode findet.

Lorenz-Attraktor (Dynamisches System)

Während ich auf TeXwelt eine auf Python basierende Version postete, brachte Henri eines, was LuaTeX verwendet, daher zunächst sein Bild:

Lorenz-Attraktor

Von pgfplots nutzte ich neben der einfachen 3D-Darstellung die Fähigkeit zum durchscheinenden Plotten, so erhalte ich eine Dichte-Darstellung:

Lorenz-Attraktor

Und der Code, hat man einmal die Daten berechnen lassen, ist einfach:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
      xmin = -25, xmax = 25,
      ymin = -25, ymax = 25,
      zmin =   0, zmax = 50,
      hide axis,
   
]
    \addplot3[mark=none, mesh, shader=interp, color=black, opacity=0.2]
      file { lorenz.dat };
  \end{axis}
\end{tikzpicture}
\end{document
}

Fraktale Landschaften (Grundansatz für Produktion prozeduraler Welten)

Zwischen benachbart liegenden Punkten werden neue Punkte bestimmt mit zufälligen, aber begrenzten Variationen, was am Ende eine bergige “Landschaft” ergibt. Die errechneten Punkte gebe ich mit Farben entsprechend ihrer Höhe aus, also blau für Meeresspiegelhöhe und darunter, grün für Berge und weiß ab “Schneegrenze”.

Fraktale Landschaft

Nächster Schritt: ein paar Startwerte vorgeben, um mit einer vordesignten Grobstruktur zu starten, wie etwa einer Insel im Wasser.

Feigenbaum-Diagram (Bifurkationen)

Ein Klassiker der Chaos-Theorie und eng verwandt mit der Mandelbrot-Menge. Auch hier wird Transparenz verwendet für einen Eindruck der Punktdichte.

Feigenbaum-Diagramm

Themen dieser Art schneide ich auf TeXwelt.de gern an. Dort fragen nicht nur Bachelor-Schreiber um Hilfe, sondern es hat sich auch eingebürgert, dass TeX-Kenner und TikZ-Freunde ihre Ideen als Fragen in den Raum stellen und oft selbst eine der Antworten dazu geben.

 

Schreibe einen Kommentar